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

IT技术 javascript download
2021-03-11 20:15:38

我想允许用户通过单击直接下载文件。然而,当涉及到已知的 MIME 类型(如 HTML、音频、视频等)时,存在一个问题。理想情况下,我想触发音频/视频文件的下载提示。最终,我也想为 HTML 文档做这件事。主要思想是让用户可以轻松下载文件,而无需要求他们导航到上下文菜单。

例如,我认为对于那些对计算机及其主要功能不太满意的人。这些人肯定会喜欢比“另存为”更好的方法。

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

我试图用window.open()来实现这一点document.execCommand("saveAs",...它确实有效,尽管它有问题并且无法处理大文件。

然后,我尝试了Downloadify,它在所有情况下都不起作用。

是否有纯 JavaScript 而非 Ajax 方式来触发下载提示,以便用户可以使用简单的左键单击直接下载文件?

3个回答

downloadHTML5 中有一个新属性,您可以用它来注释链接。它向浏览器指示应该下载资源而不是导航到该资源。目前,它仅适用于 Chrome,但它是 HTML 规范的一部分,有望很快被其他浏览器采用。

演示:http : //html5-demos.appspot.com/static/a.download.html 更多信息:http : //updates.html5rocks.com/2011/08/Downloading-resources-in-HTML5-a-download

@VictorF Firefox 从 20 版开始支持下载属性。developer.mozilla.org/en-US/Firefox/Releases/20
2021-05-01 20:15:38
@ebidel 旧浏览器不支持 HTML5。例如,IE 8 是widley 使用的,不支持HTML5。任何解决方法?
2021-05-12 20:15:38

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

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

如果浏览器支持 HTML5 属性下载将开始文件的下载,否则(在 Internet Explorer 和旧浏览器的情况下)该链接将打开另一个带有要下载文件的选项卡窗口。

您可以使用<a href="example" download>. 这是 HTML5,它适用于 Chrome、Firefox 和 Edge(但不适用于 Internet Explorer,甚至不适用于现代版本)。