Amazon S3更改文件下载名称

我有以GUID作为密钥名称存储在S3上的文件。

我正在使用预先签名的URL按照S3 REST API进行下载

我将原始文件名存储在我自己的数据库中。 当用户点击从我的Web应用程序下载文件时,我想返回它们的原始文件名,但是目前他们所得到的只是一个GUID 。 我怎样才能做到这一点?

我的networking应用程序是在salesforce,所以我没有太多的控制做response.redirects所有下载到Web服务器的文件,然后重新命名由于pipe理者的限制。

有一些HTMLredirect,元刷新,JavaScript我可以使用? 有没有办法改变S3的下载文件名(我能想到的唯一办法就是将对象应对为新名称,下载它,然后删除它)。

我想要避免为每个用户创build一个桶,因为我们将有很多用户,并且不能保证每个桶中的每个文件都有唯一的名称

任何其他解决scheme

我想你的交叉将这个问题发布到Amazon S3论坛 ,但为了其他人的利益,我想在这里发布答案:

如果每个S3对象只有一个“用户文件名”,那么你可以在你的s3文件上设置Content-Disposition头来设置下载文件名:Content-Disposition:attachment; 文件名= foo.bar

为了公平起见,我想提一下,在亚马逊论坛上提供正确的答案并不是我的,所有的学分都应该去科林·罗德斯(Colin Rhodes);-)

在2011年1月初,S3增加了请求头覆盖。 此function允许您“dynamic”更改个别请求的Content-Disposition标头。

有关获取对象的更多详细信息,请参阅S3 文档 。