2013-11-14 120 views
1

有誰知道是否有可能使用Fine Uploader上傳到S3存儲區內的文件夾?我曾嘗試向請求端點添加一個'\ foldername',但沒有運氣。Fine上傳到S3文件夾

謝謝。

回答

4

S3沒有文件夾。某些用戶界面(如AWS控制檯中的用戶)和更高級別的API可能會提供此概念作爲抽象概念,但S3對文件夾,只有密鑰沒有任何本機理解。您可以創建任何您想要的密鑰並將其傳遞給Fine Uploader S3,它會根據指定的密鑰存儲該文件。例如,「folder1/subfolder/foobar.txt」是完全有效的密鑰名稱。默認情況下,Fine Uploader會生成一個UUID並將其用作對象的密鑰名稱,但您可以通過提供objectProperties.key值(該值也可以是一個函數)輕鬆地進行更改。有關更多詳細信息,請參見S3 objectProperties option in the documentation

+0

謝謝,這似乎很好地工作:) –

2
$("#fineuploader-s3").fineUploaderS3({ 
    // .... 
    objectProperties: { 
     key: function (fileId) { 

      var filename = $('#fineuploader-s3').fineUploader('getName', fileId); 
      var uuid = $('#fineuploader-s3').fineUploader('getUuid', fileId); 
      var ext = filename.substr(filename.lastIndexOf('.') + 1); 

      return 'folder/within/bucket/' + uuid + '.' + ext; 
     } 
    } 
}); 
+2

爲什麼不你提供了一些關於代碼在做什麼的解釋? – reformed

+0

這裏不需要使用jQuery,特別是因爲問題沒有使用jQuery進行標記。 –

3

這個工作對我來說:

var uploader = new qq.s3.FineUploader({ 
    // ... 
    objectProperties: { 
     key: function(fileId) { 
      return 'folder/within/bucket/' + this.getUuid(fileId); 
     } 
    } 
}); 
0

您可以上傳之前修改服務器的路徑:

uploader.on('submit', (id) => { 
    const key = s3Uploader.methods.getUuid(id) 
    const newkey = 'folder/within/bucket/' + key 
    uploader.methods.setUuid(id, newkey) 
})