繁体   English   中英

重命名文件,然后在S3中上传文件

[英]renaming file before uploading it in S3

所以我在S3中有一个存储桶,我了解了S3存储桶的push模型事件,并且知道如何将AWS Lambda绑定到存储桶上的putObject事件。 我的问题是我想在将文件上传到存储桶之前重命名该文件,例如:在我的存储桶“ example”中有一个名为“ toto.jpeg”的文件,因此,如果用户上传另一个具有相同名称的图像,它将被覆盖并将其上传到存储桶后,lambda函数将接收到该信息。 而且我不想在客户端上重命名该文件。 有什么解决办法吗?

唯一的解决方案是在上传文件之前指定名称。 换句话说,您必须在客户端软件中执行此操作。 在这种情况下,Lambda函数无法为您提供帮助,因为只有在文件上传后才会被触发。 如果您担心名称重复会导致文件被覆盖,则应在S3存储桶上启用版本控制。

这里的问题是,您是将Backend语言用作NodeJS还是PHP?

如果不是,并且您正在使用适用于浏览器的AWS开发工具包,则可以执行以下操作:

<input type="file" accept="image/*" onchange="handleName(this.files)" />
function handleName (files) {
    var file = files[0];
    if (file) {
      var getExtension = file.name.slice((file.name.lastIndexOf(".") - 1 >>> 0) + 2);
      var fName = shortid.generate() + '.' + getExtension;
    }
}

请注意,我用短ID生成一个唯一的短ID,看到这个帖子,如果你想创建自己的实现在JS创建UUID

那么您只需在handleName()函数中调用S3上传器函数,如果您想在click事件中触发并上传,请为输入提供一个ID并使用经典的DOM选择器获取文件: document.getElementById('input').files[0];

希望这可以给您一个想法。

问候!

暂无
暂无

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

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