无法在IE7中下载文件,但在Firefox,Chrome等中没有任何问题。?
-
02-07-2019 - |
题
我有一个接收加密网址的脚本,并从中生成下载,该脚本的评论最多的是:
$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之外的任何浏览器中都可以作为魅力,我看到了与'no-cache'标题相关的问题,但是我没有发送任何类似的内容,他们谈论的是utf-8字符,但是没有任何 utf-8个字符
($ filename也没有任何utf-8字符。)
解决方案
此网站存在类似于您在IE6中的问题。总结一下:
session_start()默认发送包含“no-store”的缓存控制头。 Internet Explorer在字面上有点过分,但没有合适的 案件的错误处理,因此当您加密时会爆炸 尝试将输出页面保存到磁盘。
在session_start()之前,添加" session_cache_limiter('none');",或者查找 功能和适当调整限制器(可能'私人'更接近 标记)。
我意识到你发布的代码片段不包含对 session_start();
的调用,但我想我会分享这个可能的解决方案,以防你有一个调用它并且只是没有告诉我们。
其他提示
我通过发送标题
解决了这个问题header('Pragma: public');
header('Cache-Control: max-age=0');
我不知道session_start()通过它自己发送标题。
我在以下评论部分找到了答案:错误:Internet Explorer无法从WebServer下载FileName
使用此
在IE7浏览器中转到互联网选项 - >安全性--->自定义级别--->下载 然后启用了自动提示文件下载。
这将解决问题。
希望这会有所帮助
不隶属于 StackOverflow