使用仅JavaScript(客户端方法)是否可以在浏览器中针对已识别的MIME类型启动下载提示?

10

我希望用户可以通过单击按钮直接下载文件,但对于已知的MIME类型,例如HTML、音频、视频等,存在问题。理想情况下,我希望为音频/视频文件触发下载提示框。最终,我希望也能够适用于HTML文档。主要想法是使用户无需进入上下文菜单即可轻松下载文件。

我认为,对于那些不太熟悉计算机及其主要功能的人来说,他们肯定会比“另存为”更喜欢更好的方法。

我之所以寻找JavaScript解决方案,是因为PHP方法仅在网站上下文中运作。当处于插件或注入脚本上下文中时(即为Firefox、Chrome或Safari开发插件),你可能希望避免请求服务器端响应。

我尝试使用 window.open()document.execCommand("saveAs",... 实现这一目标。虽然它可以工作,但它有缺陷并且对于大文件失败。

然后,我尝试了Downloadify,但并非在所有情况下都有效。

是否有一种纯JavaScript、无Ajax的方法来触发下载提示框,以便用户可以使用简单的左键单击直接下载文件?

3个回答

19

@ebidel 旧浏览器不支持HTML5。比如,IE8被广泛使用,但不支持HTML5。有什么解决办法吗? - Oliver
@VictorF 自Firefox 20版本起,已支持下载属性。https://developer.mozilla.org/zh-CN/Firefox/Releases/20 - Richard Ayotte

4

如果有人现在看到这个问题,最好的解决方案是

<a href="example" download target="_blank">

如果浏览器支持HTML5属性,则下载将自动开始,否则(对于Internet Explorer和旧版浏览器)该链接将在另一个选项卡中打开文件以供下载。

1
你可以使用 <a href="example" download>。这是HTML5,适用于Chrome、Firefox和Edge(但不适用于Internet Explorer,即使是现代版本也不行)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接