gpt4 book ai didi

c# - 如何使用 Azure.Storage.Blobs BlobClient 检索 Blob 目录路径中的 Blob?

转载 作者:行者123 更新时间:2023-12-02 22:54:23 30 4
gpt4 key购买 nike

我没有在网上看到任何有关如何获取位于 BlobContainerClient 内特定目录内的所有 blob 的示例。

以前,我使用的是 Microsoft.Azure.Storage 软件包,但这些软件包已被弃用。我扫描目录中所有 blob 的旧代码是:

public async Task<void> ListAllBlobs(string path)
{
var myContainer = await GetCloudBlobClientAsync();
var directory = myContainer.GetDirectoryReference(path);
var blobs = await directory.ListBlobsSegmentedAsync(true, BlobListingDetails.None,
blobSettings.MaxResult, null, null, null);
var results = blobs.Results;

foreach(CloudBlockBlob b in results)
{
// non-relevant code
}
}

private async Task<CloudBlobContainer> GetCloudBlobClientAsync()
{
var storageAccount = CloudStorageAccount.Parse(azureBlobStorageConnectionString);
var blobClient = storageAccount.CreateCloudBlobClient();
var container = blobClient.GetContainerReference(blobStorageSettings.ContainerName);

if (!await container.ExistsAsync())
{
await container.CreateAsync();
}

return container;
}

本质上,我将上述代码从 Microsoft.Azure.Storage 移至 Azure.Storage.Blobs

如果我要重新创建 ListAllBlobs(string path) 函数以使用 Azure.Storage.Blobs,我会对如何设置容器然后访问感到困惑基于传入路径的内部容器 - 然后循环访问该容器中存在的 blob。有人可以帮忙吗?

这是我到目前为止所拥有的:

public async Task<void> ListAllBlobs(string path)
{
var myContainer = await GetCloudBlobClientAsync();
var directory = myContainer.GetBlobClient(path);

// This doesn't work because I can't do 'GetBlobs' on the Client, only on the container.
foreach(BlobItem blob in directory.GetBlobs(Blobtraits.None, BlobStates.None, string.Empty))
{
// more non-relevant code
}
}

澄清一下,在上面的代码中,我不喜欢在客户端而不是容器上调用 GetBlobs,但我无法将路径传递给容器。

最佳答案

试试这个...

static async Task GetBlobs()
{
string connectionString = "<connection_string>";
string containerName = "<container_name>";

var blobContainerClient = new BlobContainerClient(connectionString, containerName);

var blobs = blobContainerClient.GetBlobs(Azure.Storage.Blobs.Models.BlobTraits.All, Azure.Storage.Blobs.Models.BlobStates.All,
"YourPrefix");

foreach (var blob in blobs)
{
Console.WriteLine(blob.Name);
}
}

...这对我有用。

Example

关于c# - 如何使用 Azure.Storage.Blobs BlobClient 检索 Blob 目录路径中的 Blob?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70778809/

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