c# - 使用部分名称获取 Azure Blob

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

最佳答案

简短回答:不。

长答案:
如果您不知道 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

根据该结果,您可以选择第一个。

关于c# - 使用部分名称获取 Azure Blob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25113667/

相关文章:

c# - Web 应用程序在 Visual Studio 和 Azure 上显示不同的屏幕

c# - 在 .Net 6.0 中的隔离进程 Azure Functions 中使用 Newtonsoft.Json

javascript - 如何使用 javascript 设置 .net 标记帮助程序属性中的值?

c# - 指示 MEF 使用任何可用的程序集

c# - 继承 WeakReference 在 Silverlight 中抛出 ReflectionTypeLoadException

azure - 为什么我的连续 azure webjob 运行该函数两次?

azure - 多个身份验证提供商拥有

c# - 如何在 KeyDown 中确定按下了 Shift + Tab

c# - Console.WriteLine 如何影响异常堆栈

python - 使用 Python 生成 SaS token