我似乎找不到在Azure存储中访问单个Blob元数据的方法。
FetchAttributes仅适用于整个容器。我的方法返回与我设置的参数匹配的Blob列表。然后,我需要遍历该列表并从每个blob中检索一些元数据,但是我没有找到任何方法可以这样做。
似乎有很多开销,但是在创建容器对象时是否应该获取这些属性,然后过滤blob列表?
所以,我想我会尝试的,
public static IEnumerable<GalleryPhoto> GetGalleryPhotos(string folderPath)
{
var container = CreateAzureContainer(containerName, false);
container.FetchAttributes();
var blobDirectory = container.GetDirectoryReference(folderPath);
var photoGalleries = new List<GalleryPhoto>();
var blobs = blobDirectory.ListBlobs().ToList();
...rest of code
}
Blob中的Blob对象的元数据计数显示为0。
每个项目都具有元数据,通过查看Azure存储资源管理器中每个Blob的属性来进行验证。
任何帮助表示赞赏。
最佳答案
列出blob时,完全有可能获取结果中的元数据。您需要做的是在 BlobListingDetails
方法调用中指定 ListBlobs
参数,并在那里指定BlobListingDetails.Metadata
。这将在响应中包括每个Blob的元数据。因此,您的代码将是:
public static IEnumerable<GalleryPhoto> GetGalleryPhotos(string folderPath)
{
var container = CreateAzureContainer(containerName, false);
container.FetchAttributes();
var blobDirectory = container.GetDirectoryReference(folderPath);
var photoGalleries = new List<GalleryPhoto>();
var blobs = blobDirectory.ListBlobs(false, BlobListingDetails.Metadata).ToList();
...rest of code
}
尝试一下。它应该工作。