如何使用PHP显示“另存为”对话框的文本文件

时间:2009-04-08 22:01:57

标签: php http mime-types

如何使用PHP显示“另存为”对话框,要求用户将字符串下载为文本文件?基本上我会从数据库中检索一些值,然后希望能够下载包含这些数据的.txt文件。

4 个答案:

答案 0 :(得分:24)

这应该有效:

header('Content-type: text/plain');
header('Content-disposition: attachment; filename="test.txt"');

答案 1 :(得分:6)

只是为了扩展@Emil H的答案:

使用这些标头调用只能在新请求的上下文中使用。您需要实现允许脚本知道何时实际发送文件的内容,而不是在显示告知用户下载文件的表单时。

答案 2 :(得分:3)

<?
header ("Content-Type: application/download");
header ("Content-Disposition: attachment; filename=$yourfile");
header("Content-Length: " . filesize("$yourfile"));
$fp = fopen("$yourfile", "r");
fpassthru($fp);
?>

答案 3 :(得分:2)

澄清 header()的用法:

Official PHP Manual

  

header()用于发送原始HTTP标头。有关HTTP标头的详细信息,请参阅»HTTP / 1.1规范。

     

请记住,在发送任何实际输出之前,必须通过普通HTML标记,文件中的空行或PHP来调用 header()。使用 include() require(),函数或其他文件访问函数读取代码并输出空格或空行是一个非常常见的错误在调用 header()之前。使用单个PHP / HTML文件时存在同样的问题。

所以基本上,当你使用header()时,你正在改变整个页面。确保您回显的唯一内容是字符串。