我们的网络服务器上有一些文件,它们是有效的 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 选项 -> 安全设置 “自定义级别”->杂项部分: 根据内容打开文件,而不是文件扩展名