在我正在处理的Web应用程序中,用户可以单击指向CSV文件的链接。没有为mime类型设置标头,因此浏览器只是将其呈现为文本。我想将此文件作为.csv文件发送,因此用户可以使用calc,excel,gnumeric等直接打开它。
header('Content-Type: text/csv');
echo "cell 1, cell 2";
此代码在我的计算机上按预期工作(不是它一直是这样吗?)但在另一台计算机上不起作用。
我的浏览器是每晚构建的FF 3.0.1(在Linux上)。它不起作用的浏览器是IE 7和FF 3.0(在Windows上)
我不知道有什么怪癖吗?
答案 0 :(得分:216)
您可以尝试通过执行以下操作强制浏览器打开“另存为...”对话框:
header('Content-type: text/csv');
header('Content-disposition: attachment;filename=MyVerySpecial.csv');
echo "cell 1, cell 2";
哪个适用于大多数主流浏览器。
答案 1 :(得分:12)
您没有指定语言或框架,但以下标题用于文件下载:
"Content-Disposition: attachment; filename=abc.csv"
答案 2 :(得分:5)
使用Internet Explorer,您经常需要指定Pragma:public标头以及下载才能正常运行..
header('Pragma: public');
只需2美分..
答案 3 :(得分:2)
此代码可用于导出任何文件,包括csv
// application/octet-stream tells the browser not to try to interpret the file
header('Content-type: application/octet-stream');
header('Content-Length: ' . filesize($data));
header('Content-Disposition: attachment; filename="export.csv"');