在给定url文件夹路径的情况下从azure存储获取文件名

时间:2017-03-13 19:24:08

标签: c# azure

对于初学者,是的,我知道Azure存储中没有“真实”文件夹,但是给出了图像的URL路径

  

https://myazurestorage.blob.core.windows.net/accessibleimages/folder/folder/myimage.JPG

是否有方法通过传入

的基本网址来生成文件名列表
  

https://myazurestorage.blob.core.windows.net/accessibleimages/folder/folder/

我似乎无法找到任何一个参考。我可以获得blob列表,但它们是容器中的基本“文件夹”,但我需要深入钻取以获取特定的文件名。

2 个答案:

答案 0 :(得分:5)

以下是你如何做到这一点:
1.创建blob客户端:

var account = new CloudStorageAccount(new StorageCredentials("myazurestorage", YOUR_API_KEY), true);
var blobClient = account.CreateCloudBlobClient();  

2。获取容器:

var container = blobClient.GetContainerReference("acessibleimages");

3。像这样使用ListBlobs(阅读更多关于flat blob listing):

var blobList= container.ListBlobs(prefix: "folder/folder", useFlatBlobListing: true);
  1. 获得blob列表后,您可以遍历它们并提取如下路径:foreach (var blob in blobs){blob.StorageUri.PrimaryUri;}

答案 1 :(得分:0)

RAS的答案是正确的,但我只有两个步骤即可解决。 由于根据official document,在CloudBlobClient类中还有一个ListBlobs函数,因此无需创建容器对象就可以获取blob。步骤如下:

  1. 创建blob客户端:
var account = new CloudStorageAccount(new StorageCredentials("myazurestorage", YOUR_API_KEY), true);
var blobClient = account.CreateCloudBlobClient();
  1. 像这样使用ListBlob:
var blobList= container.ListBlobs(prefix: "folder/folder/", useFlatBlobListing: true);

请注意结尾的正斜杠(/)。如果未添加,则函数本身返回文件夹。如果添加,则返回文件夹中的blob。

与网络开发不同,如果前缀以“ /”开头,它将无法工作并返回404(找不到页面。)

Azure存储也区分大小写。

根据需要使用 useFlatBlobListing 。为什么Microsoft仅使用递归一词?我认为递归更好。