下载后更改存储在Amazon S3上的文件的文件名

时间:2014-05-08 20:14:18

标签: php amazon-web-services amazon-s3

所以我有一个上传服务,很多人将相同的文件上传到我的Amazon S3存储桶。我更改了我的应用程序设计,因此在上传时计算文件的SHA1,并根据上传的文件列表进行检查。

如果存在,我只是将文件分配给新的上传者。

问题是,该文件被命名为第一个名为它的上传者。所有后续的上传者将获得相同的名字。

我可以在HTML5中使用download =“”属性,但它在IE中不起作用: http://caniuse.com/#search=download

文件是远程存储的,所以我不能更改标题,除非我先将它下载到本地服务器上,这是不合逻辑的。

请建议。

2 个答案:

答案 0 :(得分:0)

我认为这种可能性的唯一方法是在重定向用户下载之前添加元数据。

您可以在S3中将元数据添加到文件中。使用键作为" Content-Disposition"和价值作为附件; filename ="〜实际文件名〜"'。您可以强制命名并触发下载。

这样,您就不必将任何文件下载到本地文件系统。

需要注意的是,如果其他人也在以毫秒为单位请求相同的文件,则第一个用户可能会获得第二个用户请求的名称。

答案 1 :(得分:-1)

使用rename()方法

示例:

$file = "boo.png";
$newName = "scary";
$ext = substr( $file, strpos( "." ), strlen( $file ) );
$path = "/images/downloaded/";

rename($path . $file, $path . $newName . $ext);

php documentation