如何从C#中的整个天蓝色blob存储容器中获取所有blob Uris的列表?
答案 0 :(得分:0)
已更新,感谢David Makogon将我指向“ useFlatBlobListing:true”标志。 我已经更新了此答案,并且我知道它可能被标记为重复。 这将返回容器中的所有blob Uris。
public List<string> GetAllBlobUrisInContainer(string containerName, string blobNamePrefix = "")
{
List<string> uriList = new List<string>();
var container = GetBlobContainer(containerName);
var blobList = container.ListBlobs(useFlatBlobListing: true);
foreach (var cloudBlockBlob in blobList)
{
uriList.Add(cloudBlockBlob.Uri.ToString());
}
return uriList;
}
答案 1 :(得分:-1)
您的代码实际上是多余的。不需要首先在blob容器中列出目录,因为Azure Blob存储中只有两个级别:容器和blob,目录只是一个虚拟概念,在服务端实际上并不存在。
下面是简化代码:
public List<string> GetBlobUris(string containerName, string blobNamePrefix = "")
{
List<string> uriList = new List<string>();
var container = GetBlobContainer(containerName);
List<CloudBlockBlob> cloudBlockBlobs = GetBlobs(containerName, blobNamePrefix);
foreach (var cloudBlockBlob in cloudBlockBlobs)
{
uriList.Add(cloudBlockBlob.Uri.ToString());
}
return uriList;
}
public List<CloudBlockBlob> GetBlobs(string containerName, string blobNamePrefix = "")
{
var container = GetBlobContainer(containerName);
return container.ListBlobs().OfType<CloudBlockBlob>().Where(b => b.Name.StartsWith(blobNamePrefix)).ToList();
}