0

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

4

1 回答 1

3

是“依恋”,不是“依恋”。

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

于 2013-01-30T16:55:02.580 回答