簡體   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