【发布时间】:2026-02-16 04:05:01
【问题描述】:
我有一个 PHP 应用程序,它生成一个 CSV 文件并将用户重定向到一个链接到该文件的静态页面,就像下面的示例:
https://www.example.com/public_html/static/temp/myfile.csv
问题是,Chrome 正在打开文件而不是保存它。我需要 Chrome 来保存这个文件,就像它处理任何其他文件一样,例如 zip 或 mp3。
这是我尝试过的:
header('location:https://www.example.com/public_html/static/temp/myfile.csv');
header('Content-Disposition: attachment; filename=myfile.csv');
但不走运,Chrome 一直显示 myfile.csv 内容而不是下载它。
有什么想法吗?
谢谢
【问题讨论】:
-
Content-Disposition在这个请求处理中在这里没有任何意义,它应该在下一个对/public_html/static/temp/myfile.csv的请求的响应头中确保第二个请求的响应头中有'Content-Disposition: attachment; -
这在约定和逻辑上都是错误的:HTTP 标头应该有正确的大小写和冒号后的空格。并且调用
https://domain/file.csv将无处执行您的PHP 代码。最重要的是:重定向 HTTP 请求(通过Location:)让客户端请求新的 URI,而不是向服务器传递目标的内容。解决方案:提供一个输出 CSV 的 PHP 文件。 -
@AmigoJack 当我重定向到 CSV 文件时,PHP 代码已经执行完毕,可以下载文件了
-
@Accountantم 我没有真正理解这个想法,你能解释更多吗?
-
@delphirules 如果对
/public_html/static/temp/myfile.csv的请求在响应标头中有Content-Disposition: attachment;,Chrome 将下载文件而不是打开它,请确保响应具有来自chrome 网络选项卡中的此标头开发者工具。
标签: php google-chrome