包含元数据

时间:2017-11-15 20:27:12

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

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

 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容器中获取映射了相同标记名称的图像列表(我看到样本下载所有blobcontent但我想专门获取具有特定标记名称的过滤列表已在上传文件的元数据中设置)

由于

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

  

可能有多个图像上传的标签名称与元数据属性相同。现在,我需要从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>();