我正在使用Azure Storage JavaScript客户端库通过引用此链接https://dmrelease.blob.core.windows.net/azurestoragejssample/samples/sample-blob.html将文件上传到Azure存储
下面的代码是我上传到Azure存储的代码片段(获取文件并将其存储在存储中)
var speedSummary = blobService.createBlockBlobFromBrowserFile('mycontainer', file.name, file, {blockSize : customBlockSize}, function(error, result, response) {
finishedOrError = true;
if (error) {
// Upload blob failed
} else {
// Upload successfully
}
});
主要问题是当我再次上传相同文件时。它正在覆盖文件。是否可以添加任何属性或标头以防止覆盖。我也希望重复文件也能被存储而不被覆盖
请帮助我解决此问题。提前致谢。
是否可以添加任何属性或标头以防止覆盖。
绝对。您可以将EtagNonMatch
访问条件指定*
为值。从文档中link
:
如果Blob的ETag与指定的ETag不匹配。指定通配符(*)仅在资源不存在时执行操作,而在资源不存在时使操作失败。
如果存在相同名称的Blob,这将导致Blob上传失败。可以在accessConditions
options参数中指定访问条件。
您可以在此处了解有关Blob存储中条件标头支持的更多信息:https : //docs.microsoft.com/en-us/rest/api/storageservices/specifying-conditional-headers-for-blob-service-operations。
我也希望重复文件也能被存储而不被覆盖
这是您需要自己处理的事情。如果由于blob已经存在而导致blob上传失败,则会Pre Condition Failed (HTTP Status Code 412)
返回一个错误。基于此错误,您需要为Blob命名一个新名称,然后重新上传。
更新
这是您可以使用的代码(未经测试):
var options = {
blockSize : customBlockSize,
accessConditions: {
EtagNonMatch: '*'
}
};
var speedSummary = blobService.createBlockBlobFromBrowserFile('mycontainer', file.name, file, options, function(error, result, response) {
finishedOrError = true;
if (error) {
// Upload blob failed
} else {
// Upload successfully
}
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句