【问题标题】:Can't download file in IE7 but there isn't any issue in Firefox, Chrome, etc..?无法在 IE7 中下载文件,但在 Firefox、Chrome 等中没有任何问题。?
【发布时间】:2008-09-22 20:23:07
【问题描述】:

我有一个脚本,它接收一个加密的 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 字符,但没有任何 @987654322 @(并且 $filename 也没有任何 utf-8 字符)。

【问题讨论】:

  • “它在 IE 中有效”根本没有帮助。它怎么不工作?有错误信息吗?超时?它是否显示文件内容?它会下载错误的东西吗?
  • 超时基本上,它会弹出一个下载窗口但永远不会前进,几分钟后它超时说:“Internet Explorer无法从WebServer下载文件名”

标签: php internet-explorer-7 download


【解决方案1】:

我通过发送标题解决了它

header('Pragma: public');
header('Cache-Control: max-age=0');

我不知道 session_start() 自己发送标头。

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

【讨论】:

    【解决方案2】:

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

    session_start() 默认发送一个包含“no-store”的缓存控制头。 Internet Explorer 有点过于字面意思了,但没有适当的 案例的错误处理,因此当您 尝试将输出页面保存到磁盘。

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

    我知道您发布的代码 sn-p 不包括对 session_start(); 的调用,但我想我会分享这个可能的解决方案,以防您确实调用它但没有向我们展示。

    【讨论】:

    • 是的,首先有一个 session_start(),我只是发布该代码,因为它是一个很长的代码。
    【解决方案3】:

    使用这个

    在 IE7 浏览器中转到 Internet 选项--> 安全性--> 自定义级别 ---> 下载 然后启用文件下载的自动提示。

    这将解决问题。

    希望这会有所帮助

    【讨论】:

    • 你不能真正要求所有用户都这样做:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-02
    • 1970-01-01
    • 1970-01-01
    • 2012-12-19
    • 1970-01-01
    • 1970-01-01
    • 2012-04-18
    相关资源
    最近更新 更多