【问题标题】:Changing the filename of a file stored on Amazon S3 upon download下载时更改存储在 Amazon S3 上的文件的文件名
【发布时间】:2014-05-08 20:14:18
【问题描述】:

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

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

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

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

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

请指教。

【问题讨论】:

  • 您应该将每个用户“版本”的文件名存储在某处
  • @Dagon 已经完成了。下一步是什么?!
  • 根据您提供文件的方式,您可以即时重命名它们
  • @Dagon 在不损失带宽以及我自己的服务器 RAM 和 CPU 的情况下如何做到这一点!我认为你没有仔细阅读这个问题。

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


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

    使用 rename() 方法

    示例:

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

    php documentation

    【讨论】:

      猜你喜欢
      • 2011-02-06
      • 2015-03-11
      • 2020-03-05
      • 2015-09-01
      • 1970-01-01
      • 2015-12-15
      • 2021-12-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多