通过HTTP标头下载csv文件的问题

时间:2011-05-19 10:46:42

标签: php mysql file http-headers

所以尝试了这个:

header("Content-type: application/csv");
header("Content-Disposition: attachment; filename=file.csv");
header("Pragma: no-cache");
header("Expires: 0");
echo $fields;

还尝试了许多其他人。

header("Content-type: text/csv");
然而,会发生什么,MySQL数据只是回到浏览器。

这是我用firebug抓取的HTTPheaderResponse:

Date    Wed, 18 May 2011 14:15:18 GMT
X-Powered-By    PHP/5.1.6
Content-disposition attachment;filename=MyVerySpecial.csv
Connection  close
Content-Length  992
Server  Apache/2.2.3 (Red Hat)

编辑:请注意,它是来自JQuery的返回.post()我正在尝试这个,如果这会影响它。

所以,有谁知道为什么会出现这个问题?我很茫然。

感谢

3 个答案:

答案 0 :(得分:2)

首先,确保将header()的第二个参数设置为true,强制设置标题:

header('Content-Type: text/csv');

让您知道下载的大小,您应该:

header('Content-Length: '.strlen($fields));

最后,请确保$fields实际上是CSV格式的字符串。

您无法直接打印数组,并希望浏览器自动将其转换为CSV格式。

答案 1 :(得分:1)

正确的MIME类型为text/csv。试试吧。

答案 2 :(得分:0)

尝试将Content-type标记为application/downloadapplication/force-download。这应该强制浏览器打开保存对话框。