Javascript 通过标记或JS强制下载

Javascript 通过标记或JS强制下载,javascript,http,html,Javascript,Http,Html,假设我在CDN上有一个文件(来自Rackspace的云文件)和一个带有该文件链接的静态html页面。我有没有办法强制下载这个文件(以防止它在浏览器中打开,例如MP3) 我们可以让服务器读取该文件,并将相应的头设置为: header("Content-Type: application/force-download") 但是我们每个月有大约500万次下载,所以我们宁愿让CDN来处理这个问题 有什么想法吗?在HTML或JavaScript中无法做到这一点 HTTPContent-Dispositi

假设我在CDN上有一个文件(来自Rackspace的云文件)和一个带有该文件链接的静态html页面。我有没有办法强制下载这个文件(以防止它在浏览器中打开,例如MP3)

我们可以让服务器读取该文件,并将相应的头设置为:

header("Content-Type: application/force-download")
但是我们每个月有大约500万次下载,所以我们宁愿让CDN来处理这个问题

有什么想法吗?

在HTML或JavaScript中无法做到这一点

HTTP
Content-Disposition
头告诉浏览器下载文件,这是由服务器发送的。您必须将CDN配置为发送该头文件,其中包含要在浏览器中下载而不是显示的任何文件

毫无帮助的是,我对Rackspace的云文件服务完全不熟悉,所以我不知道他们是否允许这样做,也不知道如何做。刚刚找到2009年12月的一页,很遗憾,它暗示着不要思考:

云文件无法为具有“内容处置:附件”HTTP头的文件提供服务。因此,在任何其他服务中都能完美工作的下载链接可能会导致浏览器直接呈现文件。机架空间工程师对此进行了确认:-(


我知道您可以使用Amazon的CloudFront服务,因为它由S3支持(参见示例)

一个疯狂的想法:通过XMLHttpRequest下载并提供一个
数据:
URL和您想要的内容类型?:p

是的,您可以通过cloudfiles API实现这一点。使用方法stream允许您在中流式传输文件内容-设置您自己的标题等。

您可以使用:



但是,.

没有
application/force download
。请改用
application/octet stream
。谢谢,现在我想起来了,这个问题没有意义。浏览器无法让我定义要保存的文件和不保存的文件,除非我有权访问标题。尝试使用内容类型是一种黑客行为。改用内容配置。啊,但是内容类型黑客行为应该适用于,对吗?@Christopher:不。链接上的
类型
只是建议性的,而不是覆盖性的;当链接实际被遵循时,浏览器必须使用真正的
内容类型
(否则会有安全问题)目前没有任何浏览器可以使用
。是的,现在转移到S3已经太晚了。无论如何,谢谢你的回答。
<a href="http..." download></a>