[英]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.