簡體   English   中英

從Azure容器和子目錄獲取所有Blob Uris

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM