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

8

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


只是把这个放在这里,因为我需要它除了Emil的答案之外... 对于换行符:echo "\r\n"; - CheeseConQueso
4个回答

24

这个应该可以工作:

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

6

为了进一步解释@Emil H的答案:

使用这些头部调用只在新请求的上下文中起作用。你需要实现一些东西,让你的脚本知道它何时实际上发送文件,而不是显示一个表单告诉用户下载文件。


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

2
为了澄清header()的用法: PHP官方手册: header()用于发送原始的HTTP头。有关HTTP头的更多信息,请参见»HTTP/1.1规范。
请记住,在发送任何实际输出之前,无论是通过正常的HTML标记、文件中的空白行还是来自PHP,都必须调用header()。读取包含(include())或要求(require())函数或另一个文件访问函数的代码并在调用header()之前输出空格或空行是非常常见的错误。当使用单个PHP/HTML文件时,也存在同样的问题。
因此,基本上,使用header()时,您正在更改整个页面。确保您只回显字符串内容。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接