在S3中上传之前重命名文件
renaming file before uploading it in S3
所以我在S3中有一个bucket,我读到了S3 bucket的推送模型事件,我知道如何将AWS lambda绑定到bucket上的putObject事件。我的问题是,我想在文件上传到bucket之前对其进行重命名,例如:在我名为"example"的bucket中,有一个名为"toto.jpeg"的文件,因此,如果用户上传了另一个同名图像,它将覆盖它,lambda函数将在上传到bucket后接收信息。我不想重命名客户端上的文件。有什么解决办法吗?
唯一的解决方案是在上传文件之前指定名称。换句话说,您必须在客户端软件中执行此操作。在这种情况下,Lambda函数对您没有帮助,因为它只有在文件上传后才会被激发。如果您担心重复的名称会导致文件被覆盖,那么您应该在S3存储桶上启用版本控制。
这里的问题是您使用的是NodeJS或PHP这样的后端语言吗?
如果没有,并且您正在使用AWS SDK进行浏览器,则可以执行以下操作:
<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;
}
}
请注意,我正在使用shortid生成一个唯一的shortid,如果您想在js中创建自己的实现create uuid,请参阅本文。
然后你可以在handleName()
函数中调用S3上传器函数,如果你想在点击事件中触发和上传,给你的输入一个id,并使用经典的DOM选择器获取文件:document.getElementById('input').files[0];
希望这能给你一个想法。
问候!
相关文章:
- 正在使用Dropzone.js删除服务器上已重命名的文件
- 我正在尝试将javascript文本框的输入保存回服务器.我想从保存的弹出文本框中获得输入,以重命名文件夹
- 使用AjaxForm Jquery重命名文件
- 在S3中上传之前重命名文件
- Phonegap使用moveTo重命名文件
- 使用 NPM 重命名文件
- 在 Express 服务器上上载期间使用用户定义的名称重命名文件
- 使用序号重命名文件 - 从文件夹中的最高数字开始索引
- 如何在上传前重命名文件
- 下载时重命名文件,但不适用于AWS S3
- Photoshop Javascript脚本:重命名文件并保存为
- 在Express.js应用中自动添加/重命名文件夹
- 在Google Drive / Google Sheet中重命名文件
- 重命名文件在谷歌云存储
- Javascript重命名文件下载
- 当同时添加2个文件时,重命名文件失败
- 使用Gulp w/特定模式重命名文件
- j查询-文件-上传前重命名文件
- 如何使用grunt重命名文件夹名称
- 使用node.js重命名文件