gpt4 book ai didi

c# - 使用 BlobUploadOptions 时如何在 Azure BlobClient 中设置覆盖

转载 作者:行者123 更新时间:2023-12-02 22:51:50 26 4
gpt4 key购买 nike

我注意到在调试跟踪中我当前的方法正在触发 blob 上的 HEAD - 大概是为了检查它是否已经存在。我知道它永远不会,如果它确实存在我想覆盖。我只想直接 PUT 来缩短几毫秒,重要的是减少 Application Insights 应用程序映射中的噪音,其中 HTTP 404 错误显示为 Azure Blob 依赖项失败。

BlobHttpHeaders 中没有选项,我也无法在 BlobUploadOptions 中找到任何此类覆盖选项。我缺少什么?

我想在一次调用中完成设置内容类型和标签的所有工作。我知道以下覆盖,但这将导致后续请求设置我想避免的内容类型和标签。

UploadAsync(Stream content, bool overwrite = false, CancellationToken cancellationToken = default)

SDK 程序集 Azure.Storage.Blobs,版本=12.10.0.0

我当前的代码:

                // blob settings
var options = new BlobUploadOptions()
{
// set content type
HttpHeaders = new BlobHttpHeaders()
{
ContentType = contentType,
ContentEncoding = "UTF-8"
},
// Set blob index tags
Tags = new Dictionary<string, string>
{
{ "quoteid", "123" },
{ "responseId","456" }
}
};

// upload blob
var content = Encoding.UTF8.GetBytes(data);
using var ms = new MemoryStream(content);
await blobClient.UploadAsync(
ms,
options
);

更新:

  1. HEAD 正在由 BlobBaseClient.Exists 触发
  2. 其他人也在 GitHub 上提问

最佳答案

根据User Gaurav Mantri - Stack Overflow的建议,使用BlockBlobClient

注意: UploadAsync(Stream, BlobUploadOptions, CancellationToken) 不支持部分更新;现有 Blob 的内容将被新 Blob 的内容覆盖。要执行 block blob 内容的部分更新,请使用 Azure.Storage.Blobs.Specialized.BlockBlobClient.StageBlock(System.String,System.IO.Stream,System.Byte[],Azure.Storage.Blobs.Models.BlobRequestConditions,System.IProgress{System.Int64},System.Threading.CancellationToken)CommitBlockListAsync(IEnumerable, CommitBlockListOptions, CancellationToken)操作。

引用:BlockBlobClient.UploadAsync(Stream, BlobUploadOptions, CancellationToken) Method (Azure.Storage.Blobs.Specialized) - Azure for .NET Developers | Microsoft Docs

关于c# - 使用 BlobUploadOptions 时如何在 Azure BlobClient 中设置覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71428072/

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