上载时Azure blob / filename的名称

时间:2014-03-07 10:13:41

标签: javascript jquery azure azure-storage fine-uploader

当我上传到azure容器时,保存的文件名是uuid(guid)我该如何更改?

我使用签名请求中添加的查询字符串“bloburi”创建了signatur。

 $("#fine-uploader").fineUploaderAzure({
        autoUpload : true,
        debug: true,
        validation: {
            itemLimit: 10,
            sizeLimit: 209715200 // 200 mb
        },
        resume: {
            enabled: true,
            id: 'ResumeUpload',
            cookiesExpireIn: 7
        },
        extraButtons: {
            folders: true
        },
        deleteFile: {
            enabled: true
        },
        request: {                
            endpoint: 'https://xxx.blob.core.windows.net/'
        },
        cors: {
            //all requests are expected to be cross-domain requests
            expected: true,

            //if you want cookies to be sent along with the request
            sendCredentials: true
        },
        signature: {
            endpoint: '/sig/'
        },
       uploadSuccess: {
           endpoint: '/success'
       }

    });

3 个答案:

答案 0 :(得分:2)

文档错了。 对于4.4.0版,要设置的正确属性为:blobProperties

// 'uuid', 'filename', or a function which may be promissory
blobProperties: {
    name: "uuid"
},

答案 1 :(得分:1)

我知道这是一个老问题,但我遇到了同样的问题。你需要通过一个Promise才能让它发挥作用:

name: function (id) { 
  return new Promise(function (resolve) {   
    resolve("The String You Want to Pass"); 
  }); 
}

答案 2 :(得分:0)

name选项的默认值为'uuid',它将Azure中的文件名设置为uuid。您可以将其设置为'filename'以将对象存储在文件名下,或者提供将创建其他名称的函数。

blobProperties: {
    name: 'filename'
}

根据我的经验,生成文件名的最佳方法是将文件名保存在唯一的id子文件夹下。这可以保证您保存原始文件名,并且没有命名冲突。

blobProperties: {
    name: function(id) {
        var uuid = this.getUuid(id),
            filename = this.getName(id);

        return uuid + '/' + filename;
    }
}