Php 通过HTTP头下载csv文件时出现问题

Php 通过HTTP头下载csv文件时出现问题,php,mysql,file,http-headers,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数据只是回显到浏

因此,我尝试这样做:

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()返回的结果,如果这会影响它,我正在尝试

那么,有人知道为什么会发生这个问题吗?我不知所措


谢谢

正确的MIME类型是
text/csv
。试试看。

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

header('Content-Type: text/csv');
如果您知道下载的大小,您应该:

header('Content-Length: '.strlen($fields));
最后,确保
$fields
实际上是CSV格式的字符串


您不能直接打印数组并期望浏览器自动将其转换为CSV。

尝试将
内容类型
标记为
应用程序/下载
应用程序/强制下载
。这将迫使浏览器打开“保存”对话框。

在标题之前是否有任何输出?您的代码很好,应该可以正常工作,如果查看我最近的编辑,我尝试将其作为JQuery.post()的返回,如果这可能会影响它的话?它应该只是一个链接。为什么需要jquery.post?这是一个页面的额外功能,因此我查询数据库以进入文件,而不刷新page.lol。嗯,是的,那将是重要的信息你最好的选择是使用一个实际的形式,并做一个传统的职位。。。可以对iFrame执行此操作,以维护类似AJAX的行为。