繁体   English   中英

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

[英]Changing the filename of a file stored on Amazon S3 upon download

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

如果存在,我也只需将文件分配给新的上传器。

问题是文件被命名为第一个上载程序。 随后的所有上传者将获得相同的名字。

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

这些文件是远程存储的,因此除非我先将其下载到不合逻辑的本地服务器上,否则就无法更改标头。

请指教。

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

您可以在S3中将元数据添加到文件中。 键为“ Content-Disposition”,值为“ attachment”; filename =“〜实际文件名〜”'。 您可以强制名称并触发下载。

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

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

使用rename()方法

例:

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

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

PHP文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM