对于初学者,是的,我知道Azure存储中没有“真实”文件夹,但是给出了图像的URL路径
https://myazurestorage.blob.core.windows.net/accessibleimages/folder/folder/myimage.JPG
是否有方法通过传入
的基本网址来生成文件名列表https://myazurestorage.blob.core.windows.net/accessibleimages/folder/folder/
我似乎无法找到任何一个参考。我可以获得blob列表,但它们是容器中的基本“文件夹”,但我需要深入钻取以获取特定的文件名。
答案 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);
foreach (var blob in blobs){blob.StorageUri.PrimaryUri;}
答案 1 :(得分:0)
RAS的答案是正确的,但我只有两个步骤即可解决。 由于根据official document,在CloudBlobClient类中还有一个ListBlobs函数,因此无需创建容器对象就可以获取blob。步骤如下:
var account = new CloudStorageAccount(new StorageCredentials("myazurestorage", YOUR_API_KEY), true);
var blobClient = account.CreateCloudBlobClient();
var blobList= container.ListBlobs(prefix: "folder/folder/", useFlatBlobListing: true);
请注意结尾的正斜杠(/)。如果未添加,则函数本身返回文件夹。如果添加,则返回文件夹中的blob。
与网络开发不同,如果前缀以“ /”开头,它将无法工作并返回404(找不到页面。)
Azure存储也区分大小写。
根据需要使用 useFlatBlobListing 。为什么Microsoft仅使用递归一词?我认为递归更好。