下载时停止 IE8 将文件重命名为 .zip?

下载时停止 IE8 将文件重命名为 .zip?

我们的网络服务器上有一些文件,它们是有效的 zip 文件,但被另一个程序用作数据文件。但是,当使用 Internet Explorer 8 下载这些文件(通过单击 href 链接)时,它们会被重命名为 *.zip,因此它们不再与正确的程序关联。

我可以在我们的网络服务器或下载页面的 html 上做些什么来阻止 IE 重命名这些文件?

FireFox 和 Chrome 保留文件的原始名称,因此不会出现这个问题。

答案1

首先介绍一下背景……

您的 Web 服务器正在使用一些 MIME 魔法来确定该文件是有效的 ZIP 存档。因此,它会发送带有以下标头的 HTTP 响应:

Content-Type: application/zip

当 IE8 收到文件时,它已经被告知这是一个 ZIP 文件。然后,当其默认安全设置“根据内容而不是文件扩展名打开文件”时,它会从注册表中查找该内容类型的指定扩展名HKEY_CLASSES_ROOT\MIME\Database\Content Type

有几种方法可以解决这个问题。您可以修改上述本地机器上的两个变量之一。但我绝对不建议尽可能更改本地机器设置 - 这是黑客行为并且无法扩展。最好的解决方案是通过以下方式修改 Web 服务器:

  • 设置要发送的文件原始扩展名的静态 MIME 声明application/octet-stream。这将促使文件以直接二进制形式传送,不包含任何内容信息。

  • 使用标头提供文件Content-Disposition: attachment,这将使 IE 尊重 Web 服务器指定的文件名。不过,这可能不是那么简单,具体取决于您的平台。

答案2

您使用 IE8 下载吗?如果是,您需要将该网站添加到 IE8 中的受信任站点列表中,以便正确下载。

答案3

显然,Internet Explorer 8 在命名文件时出于安全原因遵循服务器指定的 MIME 类型。

您可以尝试配置服务器的 mime 类型并添加“xyz”(替换为您的文件扩展名)或在 Internet Explorer 8 中停用此行为:

    Internet 选项 -> 安全设置
       “自定义级别”->杂项部分:
       根据内容打开文件,而不是文件扩展名

相关内容