【问题标题】:Azure Blob Storage Listing BlobsAzure Blob 存储列出 Blob
【发布时间】:2012-03-02 02:47:36
【问题描述】:

我需要一个从 azure 列出 blob 的功能,这样如果我指定日期,列表应该只包含在该日期之后创建的 blob。

目前我正在使用 BlobDirectory.ListBlobs() 函数,它返回所有 blob。它还有一个以 BlobRequestOptions 作为参数的重载函数。我尝试将 BlobRequestOptions 中的 AccessCondition 设置为 AccessCondition.IfModifiedSince(Date.UTC.Now) 但不知何故它给了我存储在容器中的所有 blob。

关于我可以做些什么来获得特定的 blob 子集的任何建议

【问题讨论】:

  • 您是针对存储模拟器还是针对实际的 Blob 容器运行此程序?
  • 针对 Azure 上的实际 blob 容器。

标签: c# azure azure-blob-storage


【解决方案1】:

本文展示了获取早于某个日期的 blob http://blogs.msdn.com/b/avkashchauhan/archive/2011/07/29/programatically-deleting-older-blobs-in-windows-azure-storage.aspx

显然很容易更改它以获取比某个日期更新的 blob。

【讨论】:

【解决方案2】:

我认为 AccessCondition 不适用于 blob 列表,而只是单个 blob 本身(尽管文档不清楚)。快速的 HTTP 跟踪将确认是否为该调用发送了关联的 HTTP 标头。

如果它确实适用于 ListBlobs() 调用,则资源将是 blob 容器本身。因此,我希望它返回容器中的所有 blob 或不返回任何 blob,具体取决于容器 itelf 自提供日期以来是否已被修改。

【讨论】:

  • 即使是这种情况 Date.UTC.Now 也不应该返回我任何 blob。是的,我同意你的看法,似乎没有更新文档以反映 AccessConditions 似乎不适用于 ListBlob。
【解决方案3】:

您可以执行客户端过滤器来获取所需的数据。因此,在显示结果之前,先拉下 blob,然后在代码中过滤它们(使用 Linq 或任何你喜欢的东西)。

【讨论】:

  • 是的,我打算将其作为我的最后一个选择,但仍然想知道为什么 AccessCondition 不起作用。
【解决方案4】:

您可以做的另一件事是保留一个包含文件列表的存储表。将其用作索引,通过在表上过滤来找到您关心的人。我已经完成了一些代码,但我也完全控制了写入存储帐户的内容(只有我的应用程序可以)。所以实施起来还不错。

【讨论】:

    猜你喜欢
    • 2019-08-17
    • 2019-07-28
    • 2021-12-21
    • 2019-12-19
    • 2016-03-04
    • 2017-11-10
    • 2021-10-08
    • 2017-04-18
    • 2020-12-03
    相关资源
    最近更新 更多