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

时间:2008-09-22 20:23:08

标签: php internet-explorer-7 download

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

$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字符,但没有任何{{ 1}}(并且$ filename也没有任何utf-8特征)。

3 个答案:

答案 0 :(得分:8)

我通过发送标题

解决了这个问题
header('Pragma: public');
header('Cache-Control: max-age=0');

我不知道session_start()通过它自己发送标题。

我在以下评论部分找到了答案:Error: Internet Explorer Cannot Download FileName from WebServer

答案 1 :(得分:3)

This site在IE6中遇到与您类似的问题。总结一下:

  

session_start()默认发送包含“no-store”的缓存控制头。   Internet Explorer在字面上有点过分,但没有合适的   案件的错误处理,因此当您加密时会爆炸   尝试将输出页面保存到磁盘。

     

在session_start()之前,添加“session_cache_limiter('none');”或查找   功能和适当调整限制器(可能'私人'更接近   标记)。

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

答案 2 :(得分:0)

使用此

在IE7浏览器中转到互联网选项 - &gt;安全性---&gt;自定义级别---&gt;下载 然后启用了自动提示文件下载。

这将解决问题。

希望这会有所帮助