首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从CDN下载浏览器中的文件并设置下载的文件名。

问从CDN下载浏览器中的文件并设置下载的文件名。
EN

Stack Overflow用户
提问于 2011-08-19 14:57:02
回答 3查看 8.2K关注 0票数 0

我在CDN (Rackspace CloudFiles)上存储了电话录音,其名称如下:

KPOWIEJFIE2034020SVN10ASKZALBMRI.mp3

(他们被称为“小岛屿发展中国家”)。

我的应用程序(CakePHP)显示了这些录音的列表,并使用一个<audio>标记允许从CDN直接在页面上播放它们。我还需要添加直接下载文件的选项,但我希望下载名为以下内容的文件:

2011年8月19日,亚历克斯打电话给公司4:00pm.mp3

我知道如何使用PHP和readfile()来设置任何我想要的名称,但这需要通过我的VPS流文件数据。除了两次计费带宽(一次通过CDN,一次通过我的VPS)之外,这将使我的文件在CDN (速度和可用性)上的目的落空。为了安全起见,我只使用CDN上的调用SID来命名文件。

我能用浏览器来做这个吗?JavaScript可以动态更改下载文件的名称吗?

我很感激你的帮助!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-08-19 15:10:02

在创建文件时,您应该能够使用设置对象的内容配置。例如,

代码语言:javascript
复制
PUT /<api version>/<account>/<container>/<object> HTTP/1.1
Host: storage.clouddrive.com
X-Auth-Token: 01234567-89ab-cdef-0123-456789abcdef
Content-Type: audio/mpeg
Content-Disposition: attachment; filename=Whatever_Filename_I_Want.mp3

该文件仍将以<object>名称的形式存储,但检索后将显示为Whatever_Filename_I_Want.mp3。

编辑:根据文献资料,您还可以使用此方法更新文件的元数据。

票数 1
EN

Stack Overflow用户

发布于 2011-08-19 15:01:40

文件名基于所请求的URL和获取URL时附加到响应的标题。除非您代理它,或者可以安排一个“友好”的url指向资源,否则您无法控制浏览器如何下载该文件,因为请求将由rackspace服务器处理,而不是由您的代码处理。

JS除了可能损坏进入<audio>标记的url之外,无法控制获取/下载过程。但是,您只限于那些仍然允许URL与cloudfiles服务器相关的内容。

票数 2
EN

Stack Overflow用户

发布于 2011-08-19 15:12:02

根据我对文档的了解,您可以为您的目的在CDN上构建一个目录结构。因此,您可以将安全性放入目录名中,而不是依赖文件名的安全性。这样,http://cdn.example.com/KPOWIEJFIE2034020SVN10ASKZALBMRI.mp3就变成了http://cdn.example.com/KPOWIEJFIE2034020SVN10ASKZALBMRI/Call_from_Alex_to_Firm,_Inc,_8-19-2011_4:00pm.mp3,它将按照您的意愿下载,而不会牺牲安全性。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7123453

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档