我似乎找不到在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
  }

尝试一下。它应该工作。

09-26 20:38
查看更多