强制外部下载 url
Posted
技术标签:
【中文标题】强制外部下载 url【英文标题】:Force external download url 【发布时间】:2012-11-07 06:03:00 【问题描述】:我想在我的网页上托管一个包含 mp3 文件的外部 URL。问题是单击该链接将打开播放器,我必须右键单击并“将链接另存为”才能下载文件。有没有办法强制下载文件?
我不想下载文件然后使用标题强制下载。
【问题讨论】:
【参考方案1】:编辑:如果您仅控制目标 MP3 文件而不是外部链接,则以下答案适用
链接不应直接指向 MP3 文件,而应指向一段逻辑(例如,您是否使用 ASPX?在这种情况下,您可以使用 .aspx 页面作为目标,或者您可以创建一个 HTTP 处理程序对于 .mp3 扩展名)添加一个 HTTP 标头到包含以下行的输出:
Content-Disposition: attachment;filename="whatever.mp3";
这将指示浏览器将输出的内容作为文件保存在本地。
【讨论】:
它的外部网址,我无法更改该文件的标题。 如果是外部的,我认为你无能为力。 我已经在问题中指定了这一点。还是谢谢 那么这就是你的答案:它是一个外部链接,不受你的控制。不幸的是,您无能为力。【参考方案2】:现在html5 spec 在超链接上定义了一个非常有用的download
属性,基本上允许在客户端强制下载行为,而不管来自服务器的Content-Type
和Content-Disposition
是什么:
在某些情况下,资源旨在供以后使用,而不是 立即观看。表示资源旨在 下载以供以后使用,而不是立即使用,
download
属性可以在a
或area
元素上指定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>
更多信息和演示:
Downloading resources in HTML5: a[download](HTML5 摇滚) HTML5 download Attribute(大卫沃尔什)浏览器支持:caniuse.com
下载生成的内容
您甚至可以创建一个链接来下载您生成的内容,只要有办法为其获取 base64 编码的数据 URI:
<a href="data:application/octet-stream;base64,YOUR_ENCODED_DATA" download="song.mp3">Download</a>
有关保存生成内容的更多详细信息,请参阅 Eli Grey 的这篇文章:
Saving generated files on the client-side
【讨论】:
如果用户加载页面后生成了mp3怎么办?如果您创建一个“假”锚标记并 jquery '单击'它,它不起作用......我将如何完成相同的操作并使用 JS 强制下载?可能不可能? @trainoasis 如果您可以获得生成的 mp3 的数据 URI(我相信您可以),则可以生成链接。查看我的更新答案 请注意,这仅适用于同源 URL:developer.mozilla.org/en-US/docs/Web/HTML/Element/a以上是关于强制外部下载 url的主要内容,如果未能解决你的问题,请参考以下文章
来自外部 url 的 wordpress 特色图片,无需下载