强制外部下载URL

时间:2012-11-19 10:15:46

标签: html html5 header download

我想在我的网页上托管一个包含mp3文件的外部网址。问题是单击该链接将打开播放器,我必须右键单击并保存链接为"为了下载文件。有没有强制文件下载的解决方案?

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

2 个答案:

答案 0 :(得分:11)

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

  

在某些情况下,资源仅供以后使用而不是   立即观看。指示资源的用途   下载后使用download,而不是立即使用   可以在创建的aarea元素上指定属性   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 Gray撰写的这篇文章:

Saving generated files on the client-side

答案 1 :(得分:3)

编辑:如果您只能控制目标MP3文件,则不适用以下答案,而不是如果它是外部链接

链接不应直接转到MP3文件,而应转到一个逻辑(例如,您使用的是ASPX吗?在这种情况下,您可以使用.aspx页面作为目标,或者您可以创建一个HTTP处理程序对于.mp3扩展名, HTTP标头添加到包含该行的输出中:

Content-Disposition: attachment;filename="whatever.mp3";

这将指示浏览器将输出内容视为要在本地保存的文件。