How to get a list of all folders in an container in Blob Storage?

让人想犯罪 __ 提交于 2020-02-24 04:13:36

问题


I am using Azure Blob Storage to store some of my files away. I have them categorized in different folders.

So far I can get a list of all blobs in the container using this:

    public async Task<List<Uri>> GetFullBlobsAsync()
    {
        var blobList = await Container.ListBlobsSegmentedAsync(string.Empty, true, BlobListingDetails.None, int.MaxValue, null, null, null);

        return (from blob in blobList.Results where !blob.Uri.Segments.LastOrDefault().EndsWith("-thumb") select blob.Uri).ToList();
    }

But how can I only get the folders, and then maybe the files in that specific subdirectory?

This is on ASP.NET Core btw

EDIT:

Container structure looks like this:

Container  
|  
|  
____Folder 1  
|   ____File 1  
|   ____File 2  
|   
|  
____Folder 2   
    ____File 3  
    ____File 4  
    ____File 5  
    ____File 6  

回答1:


Instead of passing true as the value to the bool useFlatBlobListing parameter as documented here pass false. That will give you only the toplevel subfolders and blobs in the container

useFlatBlobListing (Boolean)

A boolean value that specifies whether to list blobs in a flat listing, or whether to list blobs hierarchically, by virtual directory.

To further reduce the set to list only toplevel folders you can use OfType

    public async Task<List<Cloud​Blob​Directory>> GetFullBlobsAsync()
    {
        var blobList = await Container.ListBlobsSegmentedAsync(string.Empty, false, BlobListingDetails.None, int.MaxValue, null, null, null);

        return (from blob in blobList
                             .Results
                             .OfType<CloudBlobDirectory>() 
                select blob).ToList();
    }

This will return a collection of Cloud​Blob​Directory instances. They in turn also provide the ListBlobsSegmentedAsync method so you can use that one to get the blobs inside that directory.

By the way, since you are not really using segmentation why not using the simpler ListBlobs method than ListBlobsSegmentedAsync?



来源:https://stackoverflow.com/questions/44205153/how-to-get-a-list-of-all-folders-in-an-container-in-blob-storage

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!