如何在不枚举整个容器的情况下按名称后缀查找Azure存储Blob?

时间:2014-12-12 08:31:41

标签: c# azure azure-storage azure-storage-blobs

在Azure虚拟目录中包含大量blob:

VirtualDirectory1/file1
VirtualDirectory1/file2
...
VirtualDirectory1/fileN
...
VirtualDirectoryK/file1
VirtualDirectoryK/file2
...
VirtualDirectoryK/fileM

我需要一种快速方法来查找以某个后缀结尾的所有blob(例如" file1")。 至于前缀,有一种方法只能获取以某个名称开头的blob:

blobContainer.ListBlobs(prefix: "prefixHere")

以下获取具有某些后缀的Blob的方法会导致获取整个容器并在客户端上进行过滤。

var blobsFound =
    blobContainer
    .ListBlobs(useFlatBlobListing: true)
    .OfType<ICloudBlob>()
    .Where(b => b.Name.EndsWith("file1"))
    .ToList();

可以清楚地看到使用Fiddler捕获流量:

fiddler output

有没有办法在Azure端通过后缀查找所有blob,而无需向客户端提取完整的Blob列表?

1 个答案:

答案 0 :(得分:3)

  

有没有办法在Azure端按后缀查找所有blob,   没有向客户端提取完整的blob列表?

不幸的是没有。 Blob服务仅支持按blob前缀过滤,而不支持后缀。您唯一的选择是列出blob,然后进行客户端过滤。