Получить все BLOB-объекты Uris из контейнера и подкаталогов Azure - PullRequest
0 голосов
/ 19 июня 2019

Как я могу получить список всех BLOB-объектов Uris из всего контейнера для хранения больших двоичных объектов Azure в C #?

Ответы [ 2 ]

0 голосов
/ 20 июня 2019

Ваш код на самом деле избыточен.Сначала нет необходимости перечислять каталоги в контейнере BLOB-объектов, поскольку в хранилище BLOB-объектов Azure есть только два уровня: контейнеры и 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();
}
0 голосов
/ 19 июня 2019

Обновлено, спасибо вам, Дэвид Макогон, за указание на флаг 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;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...