Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取具有部分名称的Azure Blob_C#_Azure - Fatal编程技术网

C# 获取具有部分名称的Azure Blob

C# 获取具有部分名称的Azure Blob,c#,azure,C#,Azure,我在一个容器中有以下蓝色斑点 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";

我在一个容器中有以下蓝色斑点

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.ListBlobs111/列出您的blob,true

该函数将仅返回以下BLOB:

111/101.jpg
111/102.jpg
111/103.jpg
根据这个结果,你可以选择第一个。

简短回答:不

长答覆: 如果您不知道blob名称,那么必须使用container.ListBlobs获取所有blob引用,然后找到您正在寻找的blob引用

为了减少开销,可以使用虚拟目录。说出你的名字

111/101.jpg
111/102.jpg
111/103.jpg
112/204.jpg
112/205.jpg
请注意Gaurav Mantri的评论:没有必要用斜杠替换下划线,但是我相信SDK提供了使用斜杠的方法。也许他们有一些内部优化,可以更有效地使用斜杠

您可以使用container.ListBlobs111/列出您的blob,true

该函数将仅返回以下BLOB:

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

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

亲爱的@FPar谢谢,我认为这将是一个很好的选择。但有一点疑问,这行得通吗?container.ListBlobs111,true;对111_u基本上充当前缀,将返回所有以该字符串开头或大于该字符串的blob。因此,它不仅会返回从111开始的水滴,还会返回112。我同意@FPar的建议。谢谢Gaurav,我将继续用/@GauravMantri替换u。你能帮我一下吗?我不能让上述语法适用于container.ListBlobs,它只有两个版本,提到的一个和container.ListBlobsBlobRequestOptions。我无法获取语法container.ListBlobs111/,true;正在工作…我刚刚尝试使用var blobs=container.ListBlobs111/,true;这对我来说非常好。你能分享你的代码吗?亲爱的@FPar谢谢,我认为这将是一个很好的方式。但有一点疑问,这行得通吗?container.ListBlobs111,true;对111_u基本上充当前缀,将返回所有以该字符串开头或大于该字符串的blob。因此,它不仅会返回从111开始的水滴,还会返回112。我同意@FPar的建议。谢谢Gaurav,我将继续用/@GauravMantri替换u。你能帮我一下吗?我不能让上述语法适用于container.ListBlobs,它只有两个版本,提到的一个和container.ListBlobsBlobRequestOptions。我无法获取语法container.ListBlobs111/,true;正在工作…我刚刚尝试使用var blobs=container.ListBlobs111/,true;这对我来说非常好。你能分享你的代码吗?