【问题标题】:How to find Azure Storage Blob by name suffix without enumerating whole container?如何在不枚举整个容器的情况下按名称后缀查找 Azure 存储 Blob?
【发布时间】:2015-02-10 22:14:25
【问题描述】:

在 Azure 虚拟目录中有大量 blob:

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

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

blobContainer.ListBlobs(prefix: "prefixHere")

以下获取具有特定后缀的 blob 的方法会导致获取整个容器并在客户端对其进行过滤。

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

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

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

【问题讨论】:

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


    【解决方案1】:

    有没有办法通过 Azure 端的后缀查找所有 blob, 没有向客户端获取完整的 blob 列表?

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

    【讨论】:

    • 谢谢!您是否看到任何快速找到 blob 的解决方法?我看到了唯一的方法 - 展平容器并完全摆脱虚拟目录,然后使用前缀搜索...
    • 您可以通过前缀检索变得更容易的方式存储它们。其他复杂的方法是利用表存储来存储 blob URL 和其他相关信息,然后在表中进行搜索以获取 blob URL。
    猜你喜欢
    • 2014-08-06
    • 2020-06-14
    • 2019-02-01
    • 1970-01-01
    • 2018-07-05
    • 2013-02-03
    • 1970-01-01
    • 2020-05-21
    • 2015-07-06
    相关资源
    最近更新 更多