【问题标题】:How can I force download with html and/or javascript? [duplicate]如何使用 html 和/或 javascript 强制下载? [复制]
【发布时间】:2012-01-26 16:13:25
【问题描述】:

所以我有这个代码:

    <a href="http://mysite.com/song.mp3">My Song</a>

我怎样才能做到这一点,而不是用户必须右键单击,另存为,他们只需单击链接并 BAM 下载它?

【问题讨论】:

  • 如果没有像 PHP 这样的服务器端语言或操作服务器端配置(如 Apache 中的 .htaccess 文件),这是不可能的
  • 我很确定我的朋友有办法。
  • @beardtwizzle 这个有音效BAM

标签: javascript html


【解决方案1】:

没有服务器端语言就无法做到这一点的原因是它给用户带来了潜在的安全威胁。

您不会喜欢“不小心”从网站下载病毒吧?

但是,只要用户的浏览器不支持显示(或在您的情况下播放)任何文件类型,它就会自动提示用户是否要下载文件。因此,如果浏览器不支持播放 mp3 文件(我知道 Chrome 支持,也许是 Firefox),那么它应该在点击时“自动下载”。

不过,如果您真的需要其他方法,可以使用 ASP 来完成。 Here 是一个教程。

【讨论】:

  • 那么有没有办法在没有 php 标头的情况下做到这一点?
  • can be done with ASP,如果你愿意的话。
  • @user1109075:无论喜欢与否,您都需要发送标头。
  • 为什么“询问用户是否要保存文件”比“不询问任何内容自动下载和打开文件”会带来更多潜在的安全威胁?
【解决方案2】:

音频文件默认由音频播放器/插件播放。
您应该将文件放在“.zip”中,然后编写代码下载它:

<a href="http://mysite.com/song.zip">My Song</a>

这会立即将默认操作设置为强制下载。

【讨论】:

  • 这并不完全正确,在某些实际浏览器中,mp3 是在浏览器内部播放的,没有任何音频播放器或插件。 soaud 试图为他的歌曲创建一个可下载的链接,创建一个 zip 文件是一种可怕的方式。
【解决方案3】:

在服务器端,您可以发回Content-Disposition 标头,它应该可以工作(尽管它不符合规范)。请参阅此处的示例:

Uses of content-disposition in an HTTP response header

将来您将能够受益于 HTML5 的一部分 new download attribute

【讨论】:

  • 看来download attrbute 现在不起作用了
【解决方案4】:
<a type="application/mpeg" href="song.mp3">song link</a>

这将适用于今天的每个浏览器,除了移动设备。 我想要一种使用 Javascript 或简单 html 的方法来执行此操作。 我已经尝试过元内容处置,但仍然无法正常工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-11
    • 1970-01-01
    • 2012-12-06
    • 2014-10-18
    • 1970-01-01
    • 2014-04-18
    • 1970-01-01
    相关资源
    最近更新 更多