所以尝试这样做:
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() 的返回,如果这会影响它,我正在尝试这个。
那么,有谁知道为什么会出现这个问题?我不知所措。
谢谢
首先,一定要将 header()
的第二个参数设置为 true,这是强制设置标头:
header('Content-Type: text/csv');
如果您知道下载的大小,您应该:
header('Content-Length: '.strlen($fields));
最后,确保$fields
实际上是 CSV 格式的字符串。
您不能直接打印数组并期望浏览器自动将其转换为 CSV。
正确的MIME类型是text/csv
。 试试看。
尝试将Content-type
标记为 application/download
或 application/force-download
。这应该强制浏览器打开保存对话框。