我想列出存储帐户中子目录(例如images/nature
)中的所有blob。我正在使用此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");
答案 0 :(得分: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”)开头。