【问题标题】:Container Blobs with metadata包含元数据的容器 Blob
【发布时间】:2017-11-16 20:16:49
【问题描述】:

我们为图像创建了一个存储帐户,并上传了许多带有元数据属性集的图像。 (如下所示)

 public async Task<bool> UploadFileToBlob(CustomFile file)
    {
        // Get Blob Container
        CloudBlobContainer container = BlobUtilities.GetBlobClient.GetContainerReference("documents");
        container.CreateIfNotExists();

        // Get reference to blob (binary content)
        CloudBlockBlob blockBlob = container.GetBlockBlobReference(file.FileName);

        // set its properties
        blockBlob.Properties.ContentType = file.FileMime;
        blockBlob.Metadata["tag"] = "computer";
        :
        :
}

可能有多个图像可能已上传,其标签名称与元数据属性相同。

现在,我只需要从 blob 容器中获取使用相同标签名称映射的图像列表(我看到了下载所有 blob 内容的示例,但我想专门获取具有特定标签名称的过滤列表已在上传文件的元数据中设置)

谢谢

【问题讨论】:

  • 我确实相信现在有一些 Azure 搜索索引服务或一些运行在 blob 元数据上的服务。前几天碰到了。给它一个搜索。

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


【解决方案1】:

不支持在服务器查询中过滤元数据。您需要 list all the blobsBlobListingDetails.Metadata,并在客户端过滤标签名称。

【讨论】:

    【解决方案2】:

    可能有多个图像可能已上传,其标签名称与元数据属性相同。现在,我只需要从 blob 容器中获取映射到相同标签名称的图像列表。

    正如鲁兆兴回答的那样,没有内置功能可以实现您的目的。根据我的理解,您可以在 blob 名称中包含路径信息,您可以基于 tag 类别创建一个虚拟目录结构,如下所示:

    https://{accountname}.blob.core.windows.net/{container-name}/{tag01}/photo1.jpg
    https://{accountname}.blob.core.windows.net/{container-name}/{tag01}/photo2.jpg
    https://{accountname}.blob.core.windows.net/{container-name}/{tag02}/photo3.jpg
    

    然后,您可以利用ListBlobs 并按如下方式指定prefix 参数来检索您的blob:

    var blockBlobs = container.ListBlobs(prefix: "tag01").OfType<CloudBlockBlob>();
    

    【讨论】:

      猜你喜欢
      • 2022-01-05
      • 2019-06-20
      • 2017-02-15
      • 1970-01-01
      • 2012-01-01
      • 1970-01-01
      • 2016-11-24
      • 1970-01-01
      • 2015-09-08
      相关资源
      最近更新 更多