通过标记或JS强制下载

4 html javascript html5 http

让我们假设我在CDN上有一个文件(来自Rackspace的Cloud Files)和一个带有该文件链接的静态html页面.有什么方法可以强制下载这个文件(以防止它在浏览器中打开 - 例如对于mp3)?

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

header("Content-Type: application/force-download")
Run Code Online (Sandbox Code Playgroud)

但是我们每个月有大约500万次下载,所以我们宁愿让CDN来处理这个问题.

有任何想法吗?

Pau*_*ite 5

在HTML或JavaScript中无法做到这一点. 现在有!(Ish.见下文@ BruceAldrige的答案.)

HTTP Content-Disposition标头告诉浏览器下载文件,并由服务器发送.您必须配置CDN以使用您希望浏览器下载而不是显示的文件发送该标头.

无益,我对Rackspace的Cloud Files服务完全不熟悉,所以我不知道他们是否允许这样做,也不知道如何做到这一点.刚刚发现一个2009年12月的页面,表明没想到,遗憾的是:

云文件无法使用"Content-Disposition:attachment"HTTP标头提供文件.因此,可以在任何其他服务中完美运行的下载链接可能导致浏览器直接呈现文件.Rackspace工程师证实了这一点.:-(

http://drupal.org/node/656714

我知道你可以使用亚马逊的CloudFront服务,因为它得到S3的支持(参见例如http://blog.cloudberrylab.com/2009/06/how-to-set-custom-http-headers-for.html)