126

在我正在开发的 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 上)

有什么我不知道的怪癖吗?

4

4 回答 4

222

您可以尝试通过执行以下操作来强制浏览器打开“另存为...”对话框:

header('Content-type: text/csv');
header('Content-disposition: attachment;filename=MyVerySpecial.csv');
echo "cell 1, cell 2";

这应该适用于大多数主要浏览器。

于 2008-12-29T18:11:25.197 回答
12

您没有指定语言或框架,但以下标头用于文件下载:

"Content-Disposition: attachment; filename=abc.csv"
于 2008-12-29T18:14:22.260 回答
5

使用 Internet Explorer,您通常还必须指定 Pragma: public 标头才能正常下载。

header('Pragma: public');

只是我的2美分..

于 2011-05-04T09:51:45.757 回答
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"');
于 2013-03-08T10:27:59.583 回答