You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Azure容器的各blob中检索元数据?

问题原因
  • 调用GetBlobs()方法时默认不会拉取Blob的元数据,必须显式指定要获取元数据的参数
  • 原有代码对Metadata的访问方式错误,Metadata是IDictionary<string, string>类型,不能直接访问Key属性,需要遍历字典的键值对
  • 存储的元数据键为cellNumber,不是代码里判断的cellPhone,键名不匹配也会导致业务逻辑不触发
正确实现代码
using Azure.Storage.Blobs.Models;

var blobServiceClient = new BlobServiceClient(System.Environment.GetEnvironmentVariable("BlobConnection"));
var containerClient = blobServiceClient.GetBlobContainerClient("myContainer");

// 关键:传入BlobTraits.Metadata参数,拉取Blob列表时才会同步返回元数据
var blobs = containerClient.GetBlobs(BlobTraits.Metadata, prefix: "myFile.txt");

foreach (var item in blobs)
{
    // 遍历输出所有元数据键值对
    foreach (var metaItem in item.Metadata)
    {
        Console.WriteLine($"Key: {metaItem.Key}, Value: {metaItem.Value}");
    }

    // 读取指定键的元数据执行业务逻辑
    if (item.Metadata.TryGetValue("cellNumber", out string cellNumber))
    {
        // 此处为你的业务逻辑
    }
    
    if (item.Metadata.TryGetValue("homeNumber", out string homeNumber))
    {
        // 此处为你的业务逻辑
    }
}
补充注意点
  • 元数据键名不区分大小写,但取值时建议和写入时保持一致,避免不必要的异常
  • 如果你要获取的是单个已知名称的Blob,也可以直接初始化对应BlobClient后调用GetProperties()方法获取元数据,无需遍历Blob列表

内容的提问来源于stack exchange,提问作者Robby

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 13:15:03