强制外部下载地址

新手上路,请多包涵

我想在我的网页上托管一个包含 mp3 文件的外部 url。问题是单击该链接将打开播放器,我必须右键单击并“将链接另存为”才能下载文件。有什么解决方案可以强制下载文件吗?

我不想下载文件然后使用标头强制下载。

原文由 keepwalking 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 248
1 个回答

现在 HTML5 规范 在超链接上定义了一个非常有用的 download 属性,基本上允许在客户端强制下载行为,无论进来的是什么 Content-TypeContent-Disposition 从服务器:

在某些情况下,资源旨在供以后使用而不是立即查看。要指示资源打算下载供以后使用,而不是立即使用,可以在 aarea 元素上指定 download 属性为该资源创建 hyperlink

<…>

download 属性(如果存在)表示作者打算使用超链接来下载资源。该属性可能有一个值;该值(如果有)指定作者推荐用于在本地文件系统中标记资源的默认文件名。

所以你需要做的就是将属性添加到你的超链接,支持它的浏览器就会明白需要下载内容:

 <a href="http://example.com/media.mp3" download>Download Your File</a>

您甚至可以通过设置属性值为下载的文件建议不同的名称:

 <a href="http://example.com/media.mp3" download="check this out.mp3">Download Your File</a>

更多信息和演示:

浏览器支持: caniuse.com


下载生成的内容

您甚至可以创建一个链接来下载您生成的内容,只要有办法为其获取 base64 编码的数据 URI:

 <a href="data:application/octet-stream;base64,YOUR_ENCODED_DATA" download="song.mp3">Download</a>

有关保存生成的内容的更多详细信息,请参阅 Eli Grey 的这篇文章:

在客户端保存生成的文件

原文由 Dmitry Pashkevich 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏