gpt4 book ai didi

azure - 替换 Azure.Storage 中的 ListBlob,以迭代容器和 Blob

转载 作者:行者123 更新时间:2023-12-03 03:48:47 35 4
gpt4 key购买 nike

我们使用 Microsoft.WindowsAzure.Storage.Blob 库来迭代特定容器内的 blob 和容器,如下所示:

CloudBlobContainer cloudBlobContainer = GetContainerByName(containerName) ;
List<IListBlobItem> blobItems = cloudBlobContainer.ListBlobs().ToList();
{
if (blobItem is CloudBlobDirectory cloudBlobDirectory)
{
...

}
else if (blobItem is CloudBlockBlob cloudBlockBlob)
{

...
}

现在我们决定切换到 Azure.Storage.Blobs,我认为没有简单的替代方案

BlobContainerClient cloudBlobContainer = GetContainerByName(containerName);
List<BlobHierarchyItem> blobItems = cloudBlobContainer.GetBlobsByHierarchy().ToList();
var test = cloudBlobContainer.GetBlobs();

两者都只返回 blob,而不返回二级容器

new BlobServiceClient(_connectionString).GetBlobContainers();

返回容器,但不在特定容器下。我想要的是能够逐层迭代:查找目录 -> 获取该目录的所有 blob 以及每层上的所有子目录。可能吗?

最佳答案

请尝试以下代码。它将通过每个请求获取 10 个项目来获取根级别的所有 Blob 文件夹和 Blob。

using System.Collections.Generic;
using Azure.Storage.Blobs;
using System.Linq;
using System.Threading.Tasks;
using Azure.Storage.Blobs.Models;

namespace ConsoleApp1
{

class Program
{
static async Task Main(string[] args)
{
string connectionString =
"connection-string";
string containerName = "container-name";
BlobContainerClient client = new BlobContainerClient(connectionString, containerName);
var result = client.GetBlobsByHierarchyAsync(delimiter:"/");
List<string> blobFolders = new List<string>();
List<BlobItem> blobs = new List<BlobItem>();
string continuationToken = null;
int pageSize = 10;
do
{
await foreach (var blobPages in result.AsPages(continuationToken, pageSize))
{
continuationToken = blobPages.ContinuationToken;
blobFolders.AddRange(blobPages.Values.Where(b => b.IsPrefix).Select(b => b.Prefix));
blobs.AddRange(blobPages.Values.Where(b => b.IsBlob).Select(b => b.Blob));
}
} while (!string.IsNullOrWhiteSpace(continuationToken));
}
}
}

关于azure - 替换 Azure.Storage 中的 ListBlob,以迭代容器和 Blob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67904428/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com