无法在IE7中下载文件,但在Firefox,Chrome等中没有任何问题.?

lev*_*ita 5 php download internet-explorer-7

我有一个接收加密网址的脚本,并从中生成下载,该脚本的评论最多的是:

$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');
}
Run Code Online (Sandbox Code Playgroud)

下载在除IE之外的任何浏览器中都可以作为魅力,我看到了与'no-cache'标题相关的问题,但我没有发送任何类似的内容,他们谈论utf-8字符,但没有任何utf-8 characters(和$ filename)没有任何utf-8 characteres).

lev*_*ita 8

我通过发送标题解决了它

header('Pragma: public');
header('Cache-Control: max-age=0');
Run Code Online (Sandbox Code Playgroud)

我不知道session_start()通过它自己发送头文件.

我在以下注释部分找到了答案:错误:Internet Explorer无法从WebServer下载FileName


Gra*_*ner 3

该网站在 IE6 中存在与您类似的问题。总结一下:

session_start() 默认情况下发送一个包含“no-store”的缓存控制标头。Internet Explorer 对此有点太字面意思了,但没有针对这种情况进行适当的错误处理,因此当您尝试将输出页面保存到磁盘时会神秘地爆炸。

在 session_start() 之前,添加“session_cache_limiter('none');”,或者查找该函数并适当调整限制器(可能“private”更接近标记)。

我意识到您发布的代码片段不包含对 的调用session_start();,但我想我会分享这个可能的解决方案,以防您确实调用了它但没有向我们展示。