在Internet Explorer中将CSV文件作为附件发送

时间:2013-01-30 16:37:12

标签: internet-explorer http http-headers

我的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

1 个答案:

答案 0 :(得分:3)

它"附件",而不是"附件"。

(另外:HTTP中没有Content-Transfer-Encoding标头字段)