Как получить только имя папки в BLOB, используя новое пространство имен Azure .Storage.Blobs - PullRequest
1 голос
/ 13 апреля 2020

Snapshot

Я хочу получить все имена папок в контейнере, используя новый SDK - Azure .Storage.Blobs

1 Ответ

1 голос
/ 13 апреля 2020

Вы хотите использовать метод GetBlobsByHierarchy в классе BlobContainerClient и передать префикс "/". Метод вернет все BLOB-объекты и папки на уровне root. Как только вы это получите, вам просто нужно будет отфильтровать большие двоичные объекты, выбрав только те элементы результата, для которых свойство IsPrefix имеет значение true (или вы можете проверить, чтобы Blob свойство было null).

Пожалуйста, попробуйте что-то вроде следующего:

        var connectionString = "DefaultEndpointsProtocol=https;AccountName=<account-name>;AccountKey=<account-key>;EndpointSuffix=core.windows.net;";
        var containerName = "test";
        var containerClient = new BlobContainerClient(connectionString, containerName);
        var blobFolders = containerClient.GetBlobsByHierarchy(BlobTraits.None, BlobStates.None, "/").Where(b => b.IsPrefix).ToList();
        for (var i=0; i<blobFolders.Count; i++)
        {
            Console.WriteLine("Folder Prefix: " + blobFolders[i].Prefix);
        }
...