强制外部下载URL

kee*_*ing 11 html html5 header download

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

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

Dmi*_*ich 12

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

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

<...>

download属性(如果存在)表示作者希望超链接用于下载资源.该属性可以有一个值; 值(如果有)指定作者建议用于标记本地文件系统中的资源的默认文件名.

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

<a href="http://example.com/media.mp3" download>Download Your File</a>
Run Code Online (Sandbox Code Playgroud)

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

<a href="http://example.com/media.mp3" download="check this out.mp3">Download Your File</a>
Run Code Online (Sandbox Code Playgroud)

更多信息和演示:

浏览器支持:caniuse.com


下载生成的内容

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

<a href="data:application/octet-stream;base64,YOUR_ENCODED_DATA" download="song.mp3">Download</a>
Run Code Online (Sandbox Code Playgroud)

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

在客户端保存生成的文件

  • 请注意,这只适用于同源 URL:https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a (3认同)

Roy*_*tus 3

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

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

Content-Disposition: attachment;filename="whatever.mp3";
Run Code Online (Sandbox Code Playgroud)

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