2013-10-09 80 views
6

所以,當我將文件上傳到S3,我想保留原來的文件名,這似乎如果我使用精細上傳添加前綴的S3文件名

objectProperties工作:{鍵:「文件名」} ,

我也想給S3中的對象添加一個前綴。所以如果我上傳foo.jpg,我想S3對象鍵是'12345/foo.jpg'。我經歷的文檔,我不來了一個明確的方向在走。

感謝, Ĵ

回答

10

添加前綴到對象的鍵名,你可以使用objectProperties.key選項像這樣,

非jQuery的上傳

var uploader; 

uploader = new qq.s3.FineUploader({ 
    // .... 
    objectProperties: { 
     key: function (id) { 
      return '12345/' + uploader.getName(id); 
     } 
    } 
}); 

jQuery的上傳

$("#fineuploader-s3").fineUploaderS3({ 
    // .... 
    objectProperties: { 
     key: function (fileId) { 
      return '12345/' + $("#fineuploader-s3").fineUploader("getName",fileId); } 
    } 
}); 
+0

完美。這對我有效.. objectProperties:{key:function(fileId){return'12345 /'+ $(「#fineuploader-s3」)。fineUploader(「getName」,fileId); }}, – Josh

+0

如果您將問題標記爲「jquery」,Mark會在他的示例中使用jQuery併爲您提供此確切代碼。 –

+0

已更新,以顯示兩種上傳類型的示例。請接受它是否有效! –

8

,如果你喜歡Fineuploader產生的UUID,但你仍然想將文件上傳到你可以使用相同的方法,但指定的方法getUuid桶中的某個文件夾添加到馬克的回答。只要確保你第一次提取從原來的文件名的文件擴展名,像這樣:

非jquery的上傳

uploader = new qq.s3.FineUploader({ 
    // .... 
    objectProperties: { 
     key: function (fileId) { 

      var filename = uploader.getName(fileId); 
      var uuid = uploader.getUuid(fileId); 
      var ext = filename.substr(filename.lastIndexOf('.') + 1); 

      return 'folder/within/bucket/' + uuid + '.' + ext; 

     } 
    } 
}); 

的jQuery上傳

$("#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; 
     } 
    } 
}); 
0

我會用

return prefix + '/' + $('#' + tagid).fineUploader("getName", fileId).replace(/[^\w\s.-]/gi, ''); 

以刪除非字母數字值。

相關問題