【问题标题】:File opens instead of downloading in internet explorer in a href link文件在 href 链接中打开而不是在 Internet Explorer 中下载
【发布时间】:2013-07-31 21:17:57
【问题描述】:
<a href="path/to/file/filename.xxx" download="filename.xxx">filename</a>'

当我点击链接时,我的 filename.xxx 应该会被下载。

它在 chrome 中完美运行。但在 Internet Explorer 中,它打开文件而不是下载。可能是什么问题呢?是否要添加任何属性以使其在 ie 中工作。

我还需要一个适用于所有浏览器的文件下载示例。

【问题讨论】:

  • 它是什么扩展名?
  • stackoverflow.com/questions/1597732/… 已经回答了这个特定问题
  • @BruceBENAMRAN:这与用户尝试使用的下载属性无关。
  • @reyaner :任何扩展。我正在动态上传文件并以这种格式保存它们并向用户显示文件,如上所述。当用户点击它时,无论扩展名如何,它都应该被下载(就像在 chrome 中一样)。
  • 我也做了同样的事情,但它没有下载文件。 stackoverflow.com/questions/46876439/…

标签: html internet-explorer download


【解决方案1】:

IE 不支持 download 属性(请参阅http://caniuse.com/#search=download%20attribute)。

这表明只有firefox、chrome、opera和最新版本的黑莓浏览器支持download属性。

对于其他浏览器,您需要使用更传统的方法来强制下载。也就是说,服务器端代码需要设置适当的 Content-Type 和 Content-Disposition 标头来告诉(或根据您的观点欺骗)浏览器下载项目。标头应如下所示:

Content-Type: application/octet-stream
Content-Disposition: attachment;filename=\"filename.xxx\"

(感谢antyrat复制和粘贴标题)

【讨论】:

  • 在注释中添加,但基本上意味着在服务器端进行。
【解决方案2】:

它应该固定在服务器端。您的服务器应返回此文件类型的标头:

Content-Type: application/octet-stream
Content-Disposition: attachment;filename=\"filename.xxx\"

【讨论】:

  • 这只能在用户有权访问他托管他的站点的 IIS 服务器时应用。
  • @AnaMaria 是的,否则无法同时为所有用户解决此问题...
  • 八位字节流可能过于宽泛,请尝试设置正确的标题:iana.org/assignments/media-types/media-types.xhtml
【解决方案3】:

对于 apache2 服务器:

AddType application/octect-stream .ova

文件位置取决于 Apache2 的特定版本——我们的位于 /etc/apache2/mods-available/mime.conf 中

参考:

https://askubuntu.com/questions/610645/how-to-configure-apache2-to-download-files-directly

【讨论】:

    【解决方案4】:

    这一定是http头的问题。

    请看这里: HTTP Headers for File Downloads

    服务器应该告诉你的浏览器通过发送来下载文件

    Content-Type: application/octet-stream; 
    Content-Disposition: attachment;
    

    在标题中

    【讨论】:

    • 这只能在用户有权访问其站点所在的 IIS 服务器的情况下应用
    【解决方案5】:

    这不是代码问题。这是您的默认 IE 设置

    要更改“始终打开”设置:

    1. 在 Windows 资源管理器中,单击“工具”菜单,选择“文件夹选项”
    2. 在出现的窗口中,单击“文件类型”选项卡,然后滚动列表,直到找到要更改的文件扩展名(它们按字母顺序排列)。例如,如果 Internet Explorer 总是尝试打开 .zip 文件,请滚动列表,直到找到“zip”条目。
    3. 点击文件类型,然后点击“高级”按钮。
    4. 选中“下载后确认”框,然后单击“确定”>“关闭”。

    编辑:如果您问我,我不会对代码进行任何更改,而是添加以下文本“Internet Explorer 用户:要下载文件,请“右键单击”链接并点击“目标另存为”以下载文件。”

    编辑 2: 这个解决方案非常适合您。它是我刚刚从另一个答案中复制的解决方案。我不想把它当作我自己的来冒充

    Content-Type: application/octet-stream
    Content-Disposition: attachment;filename=\"filename.xxx\"
    

    但是,您必须确保指定您允许的文件类型。您在帖子中提到您希望任何类型的文件都使用此功能。这将是一个问题。

    例如。如果您的站点有图像并且最终用户单击这些图像,那么它们将被下载到他的计算机上,而不是在新页面中打开。明白了。所以你需要指定文件扩展名。

    【讨论】:

    • 虽然 OP 不能为所有用户执行此操作。此修复仅适用于他,而不适用于所有使用他的网页的人。
    • 大声笑。这是我下载非法音乐时看到的最常见的文字。
    • @AnaMaria 这有点让最终用户知道您的功能有限。我希望所有浏览器都支持我的下载。
    【解决方案6】:

    压缩您的文件 (.zip),IE 将为用户提供打开或下载文件的选项。

    【讨论】:

      【解决方案7】:

      已知 Internet Explorer 存在 HTTP 标头问题。尝试编辑服务器的 .htaccess 文件(如果您使用 Apache)并包含以下规则:

      # IE: force download of .xxx files
      AddType application/octect-stream .xxx
      <Files *.xxx>
        ForceType application/octet-stream
        Header Set Content-Disposition attachment
      </Files>
      

      【讨论】:

        【解决方案8】:

        你可以在你的 http-Header 中配置它

        httpResponse.setHeader("Content-Type", "application/force-download");
                httpResponse.setHeader("Content-Disposition",
                                       "attachment;filename="
                                       + "MyFile.pdf"); 
        

        【讨论】:

        • 您的回答未提及适用的语言或平台。我在 JavaScript 中尝试过,但未定义 httpResponse。
        • 然后定义它。它在标题中配置。它不取决于语言 http 是一种协议,伙计。这与编程语言或平台无关。
        猜你喜欢
        • 2016-04-23
        • 1970-01-01
        • 1970-01-01
        • 2021-04-07
        • 1970-01-01
        • 1970-01-01
        • 2022-11-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多