gpt4 book ai didi

javascript - 将相同文件上传到 Azure Blob 存储而不覆盖?

转载 作者:行者123 更新时间:2023-12-03 02:41:09 29 4
gpt4 key购买 nike

我正在使用 Azure 存储 JavaScript 客户端库通过引用此链接将文件上传到 Azure 存储 https://dmrelease.blob.core.windows.net/azurestoragejssample/samples/sample-blob.html

下面的代码是我上传到 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
}
});

主要问题是当我再次上传相同的文件时。它正在覆盖该文件。是否可以添加任何属性或 header 以防止覆盖。我希望重复的文件也能被存储而不被覆盖

请帮我解决这个问题。提前致谢。

最佳答案

Is there any property or header that can be added to prevent overwriting.

绝对是的。您可以使用 * 作为值指定 EtagNonMatch 访问条件。来自文档link :

If the ETag for the blob does not match the specified ETag. Specify the wildcard character (*) to perform the operation only if the resource does not exist, and fail the operation if it does exist.

如果存在同名 Blob,这将导致 Blob 上传失败。访问条件可以在 accessConditions options 参数中指定。

您可以在此处详细了解 Blob 存储中的条件 header 支持:https://learn.microsoft.com/en-us/rest/api/storageservices/specifying-conditional-headers-for-blob-service-operations .

I want duplicate files also to be stored without overwriting

这是您需要自己处理的事情。如果由于 Blob 已存在而导致 Blob 上传失败,您将收到前提条件失败(HTTP 状态代码 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
}
});

关于javascript - 将相同文件上传到 Azure Blob 存储而不覆盖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61247516/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com