我使用了“blobProperties - > name”属性作为精细上传器,如下面的答案中所述:https://stackoverflow.com/a/36453417/6746874
应该将上传文件的名称设置为函数的结果(如果函数设置为此属性)。
所以我创建了一个被调用的函数,它从一个asp.net控制器调用一个函数,在那里创建一个GUID。
以下是我的javascript代码的代码示例:
blobProperties: {//Set the names from the files to a server generated guid
name: function (fileId) {
return new Promise(function (resolve) {
// retrieve file name for this file from controller
$.ajax({
type: "GET",
url: "/controller/action",
headers: { "cache-control": "no-cache" },
success: function (result) {
uploader.setUuid(fileId, result);
resolve(result);
},
failure: function (error) {
alert("Failure")
}
});
})
}
}
它通过ajax调用操作,如果成功则将当前文件设置为uuid,将名称设置为返回值。
这很好用,但前提是文件没有分块。 如果文件被分块,则多次调用该操作。对于每个块,创建一个新的Guid作为文件名和uuid。因此它进入无效状态,因为当精细上传器尝试组合块时,azure返回错误代码: 的 400 使用以下消息:指定的阻止列表无效
我的问题是这个行为是故意为每个块调用它吗?如果是,我怎么能防止每个文件被多次调用?
P.S。在链接的答案中声明它应该只被调用一次