.NET v12 SDK 如何获取Azure存储容器中携带Metadata的Blob列表
解决方案
在Azure Storage .NET v12 SDK中,GetBlobs方法默认不会加载Blob的元数据,只需在调用时指定BlobTraits参数为Metadata,即可在批量拉取Blob列表时自动填充每个Blob的元数据字段,无需单独对每个Blob发起元数据查询请求。
修改后可直接运行的代码
using Azure.Storage.Blobs; using Azure.Storage.Blobs.Models; { string BlobPrefix = "prefix"; BlobContainerClient containerClient = new BlobContainerClient("connectionstring", "docrepo"); // 关键配置:指定BlobTraits同时拉取元数据和基础属性 var blobList = containerClient.GetBlobs(prefix: BlobPrefix, traits: BlobTraits.Metadata | BlobTraits.Properties); foreach (var blob in blobList) { Console.WriteLine(blob.Name); Console.WriteLine(blob.Properties.CreatedOn.Value.UtcDateTime); // 建议先判断Key是否存在,避免抛出异常 if (blob.Metadata.TryGetValue("KeyName", out string metadataValue)) { Console.WriteLine(metadataValue); } } }
补充说明
BlobTraits是枚举标志类型,支持多值组合,除了Metadata外,Properties用于指定拉取Blob的系统属性(如创建时间、大小等),默认就会包含,显式声明可避免参数配置变更导致属性丢失。- 如果仅需要查询单个Blob的元数据,也可以通过
BlobClient单独查询:BlobClient blobClient = containerClient.GetBlobClient("your-blob-name"); BlobProperties properties = blobClient.GetProperties(); var metadata = properties.Metadata; - 访问元数据时优先使用
TryGetValue方法读取,避免元数据中无对应Key时抛出KeyNotFoundException。
内容的提问来源于stack exchange,提问作者Megrez7
相关产品推荐
相关产品推荐

