【发布时间】:2010-10-18 10:32:09
【问题描述】:
如何使用 PHP 显示“另存为”对话框,要求用户将字符串下载为文本文件?基本上我会从数据库中检索一些值,然后希望能够下载包含这些数据的 .txt 文件。
【问题讨论】:
-
只是把它扔在这里,因为除了 emil 的回答之外,我还需要它......换行:echo "\r\n";
标签: php http mime-types
如何使用 PHP 显示“另存为”对话框,要求用户将字符串下载为文本文件?基本上我会从数据库中检索一些值,然后希望能够下载包含这些数据的 .txt 文件。
【问题讨论】:
标签: php http mime-types
这应该可行:
header('Content-type: text/plain');
header('Content-disposition: attachment; filename="test.txt"');
【讨论】:
只是为了扩展@Emil H 的答案:
使用这些标头调用仅适用于新请求的上下文。您需要实现一些东西,让您的脚本知道它何时实际发送文件,而不是何时显示告诉用户下载文件的表单。
【讨论】:
澄清header()的用法:
header() 用于发送原始 HTTP 标头。有关 HTTP 标头的更多信息,请参阅 » HTTP/1.1 规范。
请记住,必须在发送任何实际输出之前调用 header(),无论是通过普通 HTML 标记、文件中的空白行还是通过 PHP。使用 include() 或 require() 函数或其他文件访问函数读取代码并输出有空格或空行是非常常见的错误在调用 header() 之前。使用单个 PHP/HTML 文件时也存在同样的问题。
所以基本上,当您使用 header() 时,您正在更改整个页面。确保您回显的唯一内容是字符串。
【讨论】:
<?
header ("Content-Type: application/download");
header ("Content-Disposition: attachment; filename=$yourfile");
header("Content-Length: " . filesize("$yourfile"));
$fp = fopen("$yourfile", "r");
fpassthru($fp);
?>
【讨论】: