1

我想列出子目录中的所有 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");
4

1 回答 1

1

请尝试以下代码:

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);

这应该列出“自然”文件夹中的 blob 及其下方的所有文件夹。

本质上,问题在于以下代码行:

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

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

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

于 2020-01-28T13:48:15.590 回答