【问题标题】:IE10 file url issueIE10 文件 url 问题
【发布时间】:2013-06-25 13:09:08
【问题描述】:

我正在开发一个应该支持 IE10 的网页。我的用户应该能够下载安装文件 (.exe),但我会更新这个文件,以便它有版本。假设文件名是 file.exe 但文件的链接是这样的

<url>/file.exe?v1.1.21.0

在这里,其他浏览器(Chrome、Firefox、ie8、ie9)可以很好地下载该文件,但 ie10 将其下载为 file.0(可能是因为 url 中的问号)。下载后,当我将其重命名为 file.exe 时,它可以作为 exe 文件很好地工作,但我当然不能指望用户使用它。我也不想从 url 中删除版本号,因为那样的话,它可能会下载保留在缓存中的旧文件等。是否有解决方法,下载具有正确名称的文件?

【问题讨论】:

    标签: url cross-browser versioning internet-explorer-10


    【解决方案1】:

    您需要发送包含正确文件名的Content-Disposition 标头。

    Content-Disposition: attachment; filename=file.exe

    如果您正在运行 Apache 服务器,请查看以下内容:https://serverfault.com/questions/101948/how-to-send-content-disposition-headers-in-apache-for-files

    更新

    这是一个例子.htaccess

    SetEnvIf Request_URI "^/(file\.exe)$" FILENAME=$1
    Header set "Content-disposition" "attachment; filename=%{FILENAME}e" env=FILENAME
    UnsetEnv FILENAME
    

    它只会在请求 URI 为 /file.exe 的情况下添加 Content-Disposition 标头(根据您的需要更改),因此可以安全地添加它以防目录中还有其他不应该受到影响的文件.

    【讨论】:

    • 据我了解,这会迫使浏览器弹出“另存为”窗口来保存文件。但是目前,即使我在下载文件时选择了“另存为”选项,它也无法正确下载。默认情况下,它将文件名视为 file 并键入为 0 file (因为最后是“.0”,来自版本号)。即使我将 tpye 更改为“所有文件”(这是唯一的其他选项),它仍然会以 file.0 的形式下载。
    • 它根本不能强迫浏览器做任何事情,它只是告诉它它将接收什么,浏览器如何处理数据完全取决于浏览器。不过attachmentContent-Disposition的用意当然是让浏览器把数据当作下载来处理,而不是内联数据,而额外的filename参数就是建议的文件名,当然还是要靠浏览器对这些信息做了什么,但是大多数浏览器都尊重标题并在 URL 中的文件名上使用它,IE10 也是如此。所以试一试,效果很好。
    猜你喜欢
    • 1970-01-01
    • 2012-12-18
    • 2013-01-10
    • 2015-06-16
    • 1970-01-01
    • 2016-01-10
    • 2013-03-02
    • 2013-08-15
    • 1970-01-01
    相关资源
    最近更新 更多