![](/img/trans.png)
[英]How to get hold of all the blobs in a Blob container which has sub directories levels(n levels)?
[英]Get all blob Uris from Azure container and sub-directories
如何在C#中從整個天藍色的blob存儲容器中獲取所有blob Uris的列表?
已更新,謝謝David Makogon將我指向“ useFlatBlobListing:true”標志。 我已經更新了此答案,並且我知道它可能被標記為重復。 這將返回容器中的所有斑點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;
}
您的代碼實際上是多余的。 最初不需要在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();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.