6

因此,当我将文件上传到 s3 时,我想保留原始文件名,如果我使用它似乎可以工作

对象属性:{键:“文件名”},

我还想为 S3 中的对象添加一个前缀。因此,如果我上传 foo.jpg,我希望 S3 对象键为“12345/foo.jpg”。我正在浏览文档,但没有提出明确的方向。

谢谢,j

4

3 回答 3

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); }
    }
});
于 2013-10-09T19:16:33.440 回答
9

如果您喜欢 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;
        }
    }
});
于 2014-04-22T19:58:36.847 回答
0

我会用

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

为了删除非字母数字值。

于 2016-02-29T15:19:02.967 回答