精简上传到S3文件夹

时间:2013-11-14 21:34:57

标签: javascript amazon-s3 upload fine-uploader

有没有人知道是否可以使用Fine Uploader上传到S3存储桶内的文件夹?我尝试在请求端点添加'\ foldername',但没有运气。

感谢。

4 个答案:

答案 0 :(得分:6)

S3没有文件夹。一些UI(例如AWS控制台中的一个)和更高级别的API可以提供这个概念,作为抽象,但S3对文件夹没有任何本地理解,只有键。您可以创建任何所需的密钥并将其传递给Fine Uploader S3,它将存储给定该特定密钥的文件。例如," folder1 / subfolder / foobar.txt"是一个完全有效的密钥名称。默认情况下,Fine Uploader会生成UUID并将其用作对象的键名,但您可以通过提供objectProperties.key值来轻松更改此值,该值也可以是函数。有关详细信息,请参阅S3 objectProperties option in the documentation

答案 1 :(得分:5)

这对我有用:

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

答案 2 :(得分:3)

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

答案 3 :(得分:0)

您可以在上传到服务器之前修改路径:

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