无法在IE7中下载文件,但在Firefox,Chrome等中没有任何问题。?
时间:2020-03-06 14:33:47 来源:igfitidea点击:
我有一个脚本,该脚本接收加密的URL,并从该URL生成下载,该脚本的最批评者是:
$MimeType = new MimeType(); $mimetype = $MimeType->getType($filename); $basename = basename($filename); header("Content-type: $mimetype"); header("Content-Disposition: attachment; filename=\"$basename\""); header('Content-Length: '. filesize($filename)); if ( @readfile($filename)===false ) { header("HTTP/1.0 500 Internal Server Error"); loadErrorPage('500'); }
下载在除IE之外的任何浏览器中都具有吸引力,我已经看到了与"无缓存"标头有关的问题,但是我没有发送类似的内容,它们谈论的是utf-8字符,但是没有任何utf-8字符
(并且$ filename也没有任何utf-8字符)。
解决方案
该站点存在与我们在IE6中类似的问题。总结一下:
session_start() by default sends a cache control header including "no-store". Internet Explorer takes this a bit too literally, but doesn't have appropriate error handling for the case, and as a result explodes cryptically when you attempt to save the output page to disk. Before session_start(), add "session_cache_limiter('none');", or look up that function and tweak the limiter as appropriate (probably 'private' is closer to the mark).
我意识到我们发布的代码片段不包含对session_start();
的调用,但是我认为,如果我们确实有对此调用的提示,但没有显示给我们,我将分享这个可能的解决方案。
我通过发送标题解决了
header('Pragma: public'); header('Cache-Control: max-age=0');
我不知道session_start()自己发送标头。
我在以下内容的评论部分中找到了答案:错误:Internet Explorer无法从WebServer下载文件名
用这个
在IE7浏览器中,转到Internet选项->安全性---->自定义级别--->下载
然后启用自动提示提示文件下载。
这将解决问题。
希望这会有所帮助