Chrome打开CSV文件而不是保存它

时间:2019-08-06 13:41:19

标签: php google-chrome

我有一个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内容,而不是下载它。

有什么想法吗?

谢谢

3 个答案:

答案 0 :(得分:1)

您在注释中的论点有一个永无止境的误解:Location标头指示任何客户端对给定URI执行新请求。这样,当前请求结束。当前请求(即Content-Disposition)的标头不会神奇地转移到下一个请求。

换句话说:您的“链接到文件的静态页面,仅以下示例”必须发送所需的标题。

我最终肯定不是Chrome的问题,但会影响所有的互联网浏览器,因为它们很容易将CSV数据检测为文本,因此能够呈现/显示该数据,而不仅仅是将其保存到文件。

答案 1 :(得分:0)

使用html5,您可以在元素中设置“下载”属性。

下载! 来源:http://updates.html5rocks.com/2011/08/Downloading-resources-in-HTML5-a-download

答案 2 :(得分:-1)

经过几天的努力后,我唯一真正的解决方法是将文件压缩为ZIP,然后重定向到ZIP文件而不是CSV。这样,Chrome就会下载ZIP文件而不是打开它:

header('location:https://www.example.com/public_html/static/temp/myfile.csv.zip');