获取带有部分名称的Azure Blob

本文关键字:Azure Blob 获取 | 更新日期: 2023-09-27 18:16:09

我在一个容器中有以下Azure blobs,

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();
            }

获取带有部分名称的Azure Blob

简短的回答:no.

长答:
如果你不知道blob的名称,你必须得到container.ListBlobs()的所有blob引用,然后找到你要找的那个。

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

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

Gaurav Mantri的注释:没有必要用斜杠代替下划线,但是我相信,sdk提供了使用斜杠的方法。(也许他们有一些内部优化,可以更有效地使用斜杠)

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

列出blobs

函数将只返回那些blob:

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

从这个结果中,你可以取第一个