有没有人知道是否可以使用Fine Uploader上传到S3存储桶内的文件夹?我尝试在请求端点添加'\ foldername',但没有运气。
感谢。
答案 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)
})