我的PHP脚本正在生成CSV文件。
点击下载链接后,我希望浏览器将其视为附件并显示下载提示。
这在Firefox中可以正常工作,但Internet Explorer 8只是将CSV文件显示为文本。
这是生成标题的PHP代码:
return new Response( $vOutput, 201, array
(
'Content-Encoding' => 'UTF-8',
'Content-Type' => 'application/octet-stream; charset=UTF-8',
'Content-Transfer-Encoding' => 'binary',
'Content-Disposition' => 'attachement; filename="entrance_stats_line' . $vLine . '.csv"',
'Pragma' => '',
'Cache-Control' => '',
'Content-Length' => strlen( $vOutput ),
'Expires' => '0'
)
);
(使用的框架是Silex,依赖于Symfony的Symfony \ Component \ HttpFoundation \ Response类,虽然我不确定是否相关)
Firefox(使用篡改数据)收到的HTTP标头是:
Status=Created - 201
Date=Wed, 30 Jan 2013 15:53:38 GMT
Server=Apache/2.2.21 (Win32) PHP/5.3.10
X-Powered-By=PHP/5.3.10
Content-Encoding=UTF-8
content-transfer-encoding=binary
Content-Disposition=attachement;filename="entrance_stats_line1.csv";
Cache-Control=no-cache
Content-Length=6141
Connection=close
Content-Type=application/octet-stream; charset=UTF-8
我没有检查过标题是否在IE中被修改但如果我设法让Fiddler工作,我会发布它们。
之前我曾尝试过其他一些标头组合,包括以下内容:
Status=Created - 201
Date=Wed, 30 Jan 2013 16:34:46 GMT
Server=Apache/2.2.21 (Win32) PHP/5.3.10
X-Powered-By=PHP/5.3.10
Content-Encoding=UTF-8
Content-Disposition=attachement; filename=entrance_stats_line1.csv
Cache-Control=no-cache
Connection=close
Content-Type=text/csv; charset=UTF-8
这只是给我一个“无法找到请求的网站”错误。
IE版本为8.0.6001.18702
答案 0 :(得分:3)
它"附件",而不是"附件"。
(另外:HTTP中没有Content-Transfer-Encoding标头字段)