JSP页面的以下摘录显示了“content-type”和“content-disposition”设置。该页面应为用户提供HTML表格 可以导入到Excel。
Chrome,Firefox,IE按预期工作,其设置如下所示。 OS X Snow Leopard上的Safari为下载的文件添加了.html
,结果为report.xls.html
。是否有可用的解决方法使Safari正常运行?
<%@ page session="false" contentType="application/vnd.ms-excel;charset=utf-8"%>
...
<meta name="content-type" content="application/vnd.ms-excel;charset=utf-8"></meta>
<meta name="content-disposition" content="attachment; filename=report.xls">
答案 0 :(得分:1)
我发送这些标头和csv文件,safari将其下载为report.csv
Pragma: public
Expires: 0
Cache-Control: must-revalidate, post-check=0, pre-check=0
Cache-Control: private
Content-Type: application/octet-stream
Content-Disposition: attachment; filename="report.csv";
Content-Transfer-Encoding: binary
答案 1 :(得分:1)
在文件名周围添加引号,在Safari / PHP中为我修复了一些内容。
答案 2 :(得分:1)
这个对我有用,让徒步旅行能够表现出来:
@ob_end_clean(); //turn off output buffering to decrease cpu usage
// required for IE
if(ini_get('zlib.output_compression'))
ini_set('zlib.output_compression', 'Off');
header('Content-Type: application/force-download');
header('Content-Disposition: attachment; filename="download.csv"');
header('Content-Transfer-Encoding: binary');
header('Accept-Ranges: bytes');
header('Cache-control: no-cache, pre-check=0, post-check=0');
header('Cache-control: private');
header('Pragma: private');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // any date in the past
取自Idiot-proof, cross-browser force download in PHP - 问题是要求不同的略有不同的东西,但答案可能相似,足以考虑将此标记为重复......