精简上传器在s3上为文件名添加前缀

时间:2013-10-09 19:07:59

标签: fine-uploader

因此,当我将文件上传到s3时,我想保留原始文件名,如果我使用

,它似乎可以正常工作

objectProperties:{key:“filename”},

我还想在S3中为对象添加前缀。所以,如果我上传foo.jpg,我希望S3对象键为'12345 / foo.jpg'。我正在浏览文档,但我没有明确指示进入。

谢谢, Ĵ

3 个答案:

答案 0 :(得分: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); }
    }
});

答案 1 :(得分:9)

如果您希望Fineuploader生成UUID但您仍希望将文件上传到存储桶中的某个文件夹,则可以添加Mark的答案,您可以使用相同的方法但指定方法{{1 }}。只需确保从原始文件名中提取文件扩展名,如下所示:

非jquery上传者

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;

        }
    }
});

答案 2 :(得分:0)

我会用

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

以删除非字母数字值。