Alıştırma - Blob başvurularını alma
Blob Depolama'da bir kapsayıcıyla etkileşim kurmak için bir BlobContainerClient
nesne kullanın. Son ünitede gördüğünüz gibi kapsayıcılar oluşturmaya ek olarak, kapsayıcıdaki BlobContainerClient
blobları listelemek için de bir nesne kullanılabilir.
Kapsayıcıdaki blobları listeleme
'nin GetBlobsAsync
yöntemini kullanarak BlobContainerClient
bir kapsayıcıdaki blobların listesini alın. Arka planda istemci, kapsayıcıdaki tüm blobları listelemek için Azure'a bir veya daha fazla HTTP çağrısı yapar. Bu yöntem zaman uyumsuz olduğundan, bunları okurken sonuçları almanız await
gerekir. Bunların tümü tek bir HTTP çağrısında döndürülmeyebilir. Aşağıdaki kod, sonuçları döngüyle foreach
okumak için standart deseni gösterir.
AsyncPageable<BlobItem> blobs = containerClient.GetBlobsAsync();
await foreach (var blob in blobs)
{
// Read the BlobItem and work with it here
}
içindeki yöntemini BlobContainerClient
kullanarak listBlobs
kapsayıcıdaki blobların listesini alabilirsiniz. Arka planda istemci, kapsayıcıdaki tüm blobları listelemek için Azure'a bir veya daha fazla HTTP çağrısı yapar. Bu yöntem uygulayan Iterable<BlobItem>
döndürürPagedIterable<BlobItem>
. Ardından bir kerede bir öğeyi veya öğe sayfasını okuyabilirsiniz. Aşağıdaki kod, sonuçları döngüyle for
okumak için standart deseni gösterir.
for (BlobItem blob : blobContainerClient.listBlobs()) {
// Read the BlobItem and work with it here
}
blobContainerClient.listBlobs()
.stream()
.map(blobItem -> /* Read the BlobItem and work with it here */)
.collect(Collectors.toList());
Alıştırma
Uygulamanızdaki özelliklerden biri, API’den blobların listesini almayı gerektiriyor. Kapsayıcımızdaki tüm blobları listelemek için daha önce gösterilen deseni kullanın. Listeyi işledikçe, her blobun adını alıyorsunuz.
Düzenleyiciyi kullanarak Blob Depolama.cs dosyasını aşağıdaki kodla değiştirin GetNames
ve değişikliklerinizi kaydedin.
public async Task<IEnumerable<string>> GetNames()
{
List<string> names = new List<string>();
BlobServiceClient blobServiceClient = new BlobServiceClient(storageConfig.ConnectionString);
// Get the container the blobs are saved in
BlobContainerClient containerClient = blobServiceClient.GetBlobContainerClient(storageConfig.FileContainerName);
// This gets the info about the blobs in the container
AsyncPageable<BlobItem> blobs = containerClient.GetBlobsAsync();
await foreach (var blob in blobs)
{
names.Add(blob.Name);
}
return names;
}
, FilesController
bu yöntemin döndürdüğü adları işliyor ve adları URL'lere dönüştürüyor. İstemciye geri döndüğünüzde, adlar sayfada köprü olarak işlenir.
Düzenleyiciyi kullanarak BlobStorage.java
dosyasındaki listNames
bölümünü aşağıdaki kodla değiştirin ve değişikliklerinizi kaydedin.
public List<String> listNames() {
return blobContainerClient.listBlobs()
.stream()
.map(BlobItem::getName)
.collect(Collectors.toList());
}
IndexBean
ve index.xhmtl
sayfada köprü olarak işlenmek üzere bu yöntem tarafından döndürülen adları işleyin.