我沒有在網上看到任何關于如何獲取位于某個目錄中的所有 blob 的示例BlobContainerClient。
以前,我使用的是這些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.Storageover 移動到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在客戶端而不是容器上呼叫,但我不能傳入容器的路徑。
uj5u.com熱心網友回復:
你快到了。你仍然會使用BlobContainerClient并呼叫GetBlobsAsync方法。您錯過的是您需要將prefix引數的值設定為path.
所以你的代碼會是這樣的:
var myContainer = await GetCloudBlobClientAsync();
var blobsListingResult = await myContainer.GetBlobsAsync(prefix=path);
uj5u.com熱心網友回復:
試試這個 ...
static async Task GetBlobs()
{
string connectionString = "<connection_string>";
string containerName = "<container_name>";
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);
}
}
...這對我有用。
(編輯:我誤讀了你的問題,所以更正了我的答案)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/417403.html
標籤:
上一篇:在FCM通知中設定ID
下一篇:從EventHub讀取特定訊息
