无法从存储帐户中的子目录获取 bloblist

Unable to get bloblist from a subdirectory in Storage Account

我想列出子目录中的所有 blob,例如存储帐户中的 images/nature。我正在使用此 c# 代码来实现我的目标:

string storageConnectionString = Environment.GetEnvironmentVariable("BlobConnection", EnvironmentVariableTarget.Process);
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(storageConnectionString);
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference(@"images/nature");

此代码对我不起作用。你有什么想法,我该如何做这份工作?

如果所有 blob 都在根文件夹中,则以下代码可以正常工作:

 string storageConnectionString = Environment.GetEnvironmentVariable("BlobConnection", EnvironmentVariableTarget.Process);
 CloudStorageAccount storageAccount = CloudStorageAccount.Parse(storageConnectionString);
 CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
 CloudBlobContainer container = blobClient.GetContainerReference(@"images");

请尝试以下代码:

string storageConnectionString = Environment.GetEnvironmentVariable("BlobConnection", EnvironmentVariableTarget.Process);
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(storageConnectionString);
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference(@"images");
var blobs = container.ListBlobs("nature", true);

这应该列出 "nature" 文件夹内的 blob 及其下的所有文件夹。

基本上问题出在以下代码行:

CloudBlobContainer container = blobClient.GetContainerReference(@"images/nature");

Azure Blob 存储基本上具有 2 级层次结构 - 容器和 blob。那里的文件夹是虚拟的,本质上是您在 blob 名称中添加的前缀。

我在代码中所做的是列出名称以前缀开头的容器中的 blob(在您的示例中为 "nature")。