获取Azure Blob使用部分名称

时间:2014-08-04 07:27:58

标签: c# azure

我在容器中有以下Azure blob,

111_101.jpg
111_102.jpg
111_103.jpg
112_204.jpg
112_205.jpg

现在我知道图像名称的第一部分,即111或112.我是否可以拍摄从111或112开始的第一张图像。?

当变量_image只有文件名的第一部分,即111时,如何修改以下代码。

            string _urlContainer = containerName;
            string _image = "111_102.jpg";

            CloudBlobClient blobClient = null;
            CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConfigurationManager.ConnectionStrings["StorageConnectionString"].ConnectionString);
            blobClient = storageAccount.CreateCloudBlobClient();
            CloudBlobContainer container = blobClient.GetContainerReference(_urlContainer);
            CloudBlockBlob blockBlob = container.GetBlockBlobReference(_image);            
            if (Exists(blockBlob))
            {
              return blockBlob.DownloadByteArray();
            }

1 个答案:

答案 0 :(得分:2)

简答:不。

答案很长:
如果您不知道blob名称,则必须使用container.ListBlobs()获取所有blob引用,然后找到一个,您正在寻找。

为了减少开销,您可以使用虚拟目录。命名你的blob

111/101.jpg
111/102.jpg
111/103.jpg
112/204.jpg
112/205.jpg

关于Gaurav Mantri评论的注意事项:没有必要用斜杠替换下划线,但我相信,SDK提供了使用斜杠的方法。 (也许他们有一些内部优化,可以更有效地使用斜杠)

您可以使用container.ListBlobs("111/", true);

列出您的blob

该函数只返回那些blob:

111/101.jpg
111/102.jpg
111/103.jpg

从那个结果中,你可以拿第一个。