【问题标题】:Check if Blob of unknown Blob type exists检查是否存在未知 Blob 类型的 Blob
【发布时间】:2015-08-19 00:41:21
【问题描述】:

我继承了一个使用 Azure Storage Client 1.7 构建的项目,并且正在升级它,因为 Microsoft 已宣布从今年 12 月起不再支持该项目。

对 Blob 存储中文件的引用存储在具有以下字段的数据库中:

  1. FilePath - uploadfiles/xxx/yyy/Image-20140117170146.jpg形式的字符串

  2. FileURI - https://zzz.blob.core.windows.net/uploadfiles/xxx/yyy/Image-20140117170146.jpg 形式的字符串

如果文件不存在,GetBlobReferenceFromServer 会抛出异常,所以如果你知道容器和 Blob 类型,似乎你应该使用GetBlockBlobReference

所以我的问题:

  • 我是否可以假设当前上传的任何 Blob(使用 StorageClient 1.7)都是 BlockBlob?
  • 因为我需要知道要调用 GetBlockBlobReference 的容器名称,我可以肯定地说,在上面的示例中,我的容器始终是 uploadfiles

【问题讨论】:

    标签: azure azure-storage


    【解决方案1】:

    我可以假设当前上传的任何 Blob(使用 StorageClient 1.7) 会是 BlockBlob 吗?

    虽然您不能 100% 确定通过存储客户端库 1.7 上传的 blob 是 Blob Blobs,因为 1.7 也支持 Page Blobs,但是您可以做出一些明智的猜测。例如,如果文件是图像文件和其他常用文件(pdf、文档等),您可以假设它们是块 blob。通常,您会看到作为页面 blob 上传的 vhd 文件。同样,如果这些是由您的应用程序的用户上传的,它们很可能是块 blob。

    说了这么多,我认为你应该使用GetBlobReferenceFromServer 方法。您可以做的是列出数据库中的所有 blob,并为每个 blob 调用 GetBlobReferenceFromServer 方法。如果 blob 存在,那么您将获得 blob 类型。如果 blob 不存在,此方法会给您一个错误。这将是识别数据库中现有条目的 blob 类型的最快方法。如果需要,如果在检查 blob 类型时发现块和页 blob,则可以将 blob 类型与现有记录一起存储回数据库中,以便将来需要在创建 CloudBlockBlob 或 @987654326 之间做出决定@reference,你可以看看这个字段。

    因为我需要知道调用 GetBlockBlobReference 的容器名称可以 我可以肯定地说,在上面的示例中,我的容器总是 上传文件

    是的。在您上面列出的示例中,您可以说 blob 容器是 upload files

    【讨论】:

      猜你喜欢
      • 2013-07-05
      • 2018-03-28
      • 1970-01-01
      • 2011-02-08
      • 1970-01-01
      • 2017-10-28
      • 2012-06-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多