23
<a href="path/to/file/filename.xxx" download="filename.xxx">filename</a>'

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

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

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

4

8 回答 8

20

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

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

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

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

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

于 2013-07-31T11:19:23.157 回答
11

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

Content-Type: application/octet-stream
Content-Disposition: attachment;filename=\"filename.xxx\"
于 2013-07-31T11:19:25.200 回答
2

对于 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

于 2017-08-16T14:55:29.253 回答
0

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

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

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

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

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

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

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

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

于 2013-07-31T11:20:57.080 回答
0

这一定是http头的问题。

请参阅此处: 文件下载的 HTTP 标头

服务器应该告诉您的浏览器通过发送

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

在标题中

于 2013-07-31T11:19:34.397 回答
0

众所周知,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>
于 2018-11-30T13:37:06.010 回答
0

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

于 2016-07-20T09:51:02.020 回答
-3

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

httpResponse.setHeader("Content-Type", "application/force-download");
        httpResponse.setHeader("Content-Disposition",
                               "attachment;filename="
                               + "MyFile.pdf"); 
于 2013-07-31T11:19:38.170 回答