gpt4 book ai didi

c# - Azure 函数 - 在新 blob 上设置 CloudBlockBlob 元数据

转载 作者:行者123 更新时间:2023-12-03 05:21:04 24 4
gpt4 key购买 nike

我创建了一个 Azure 函数,我想在其中从输入 blob 检索信息并在新创建的输出 blob 上设置元数据。然而,我认为我没有正确设置元数据,因为我无法在应用程序的其他部分检索它。

Azure函数代码:

    public static async Task Run(
[BlobTrigger("inputcontainer/{name}")] Stream inputBlob,
[Blob("outputcontainer/{name}.jpeg", FileAccess.Write)] CloudBlockBlob outputBlob,
string name,
ExecutionContext executionContext,
ILogger log)
{

// code that processes input and extracts some info - including senderId
....
....

// task to generate a thumbnail from a video, returns a stream representing thumbnail
var thumbnailTask = GenerateThumbnail(inputBlob);
Stream ms = thumbnailTask.Result;
ms.Position = 0;
outputBlob.Metadata["SenderId"] = senderId;
outputBlob.UploadFromStream(ms);
}

以下是我在应用程序中其他地方读取 CloudBlockBlob 的方式。此时我可以正常读取我上传的流,但 blob.Metadata 为空:

        BlobResultSegment blobResultSegment = await outputContainer.ListBlobsSegmentedAsync(null);
foreach (IListBlobItem item in blobResultSegment.Results)
{
CloudBlockBlob blob = (CloudBlockBlob)item;
// count = 0
Console.WriteLine($"Blob info {blob.Metadata.Count}");

我不明白为什么没有在新 blob 上设置元数据。非常感谢任何帮助。谢谢。

最佳答案

您设置元数据的代码没有任何问题,它设置正确。问题在于获取 blob 列表的代码。当您列出 Blob 时,默认情况下不会提取 Blob 的元数据。

请使用 ListBlobsSegmentedAsync(String, Boolean, BlobListingDetails, Nullable<Int32>, BlobContinuationToken, BlobRequestOptions, OperationContext, CancellationToken) 覆盖列出 blob 并提供 BlobListingDetails. Metadata对于 BlobListingDetails 范围。完成此操作后,您应该能够看到该 blob 的元数据。

关于c# - Azure 函数 - 在新 blob 上设置 CloudBlockBlob 元数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72393102/

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