我正在尝试使用PHP脚本下载文本文件,但是当我的脚本运行时,文件内容会显示在浏览器窗口中。我试过这个解决方案:Why downloaded file is not downloaded instead it is shown in browser? 但是我的代码已经有了内容长度标题。这是我的PHP代码(我从另一篇文章1获得并修改为文本文件)
$file = 'file.txt';
header('Content-Description: File Transfer');
header('Content-Type: text/plain');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
exit;
Browser output of text file contents
我试图从php.com复制一个示例来获取pdf文件,我得到与我链接的帖子相同的符号。
我不确定为什么会这样。我在Chrome上使用PHP版本5.6.10运行MAMP 3.5。
这让我很困惑,因为到目前为止,我已经能够在线找到我所做的一切。据我所知,我所做的是正确的,所以任何建议都会非常感激。
非常感谢,
Nehal Patel
在Marcus的指导下解决(9/4/15): 删除了flush()和ob_clean()。
$file = 'file.txt';
header('Content-Description: File Transfer');
header('Content-Type: text/plain');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
readfile($file);
exit;
答案 0 :(得分:1)
尝试将内容类型更改为八位字节/流
header('Content-Type: application/octet-stream');