因此,当我将文件上传到 s3 时,我想保留原始文件名,如果我使用它似乎可以工作
对象属性:{键:“文件名”},
我还想为 S3 中的对象添加一个前缀。因此,如果我上传 foo.jpg,我希望 S3 对象键为“12345/foo.jpg”。我正在浏览文档,但没有提出明确的方向。
谢谢,j
因此,当我将文件上传到 s3 时,我想保留原始文件名,如果我使用它似乎可以工作
对象属性:{键:“文件名”},
我还想为 S3 中的对象添加一个前缀。因此,如果我上传 foo.jpg,我希望 S3 对象键为“12345/foo.jpg”。我正在浏览文档,但没有提出明确的方向。
谢谢,j
要为对象的键名添加前缀,您可以使用如下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); }
}
});
如果您喜欢 Fineuploader 生成 UUID 但您仍希望将文件上传到存储桶中的某个文件夹,则添加到 Mark 的答案中,您可以使用相同的方法,但指定方法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;
}
}
});
我会用
return prefix + '/' + $('#' + tagid).fineUploader("getName", fileId).replace(/[^\w\s.-]/gi, '');
为了删除非字母数字值。