Gyakorlat – Blobreferenciák lekérése
A Blob Storage tárolóinak használatához használjon objektumot BlobContainerClient
. Az előző leckében látott tárolók létrehozása mellett egy BlobContainerClient
objektum is használható a tárolóban lévő blobok listázására.
Tároló blobjainak listázása
A tárolóban lévő blobok listájának lekérése GetBlobsAsync
a metódus használatávalBlobContainerClient
. A háttérben az ügyfél egy vagy több HTTP-hívást indít az Azure-ba a tároló összes blobjának listázásához. Mivel ez a módszer aszinkron, olvasáskor az eredményeket kell await
elvégeznie. Előfordulhat, hogy nem mindegyik lesz visszaadva egyetlen HTTP-hívásban. Az alábbi kód az eredmények ciklussal foreach
való olvasásának szabványos mintáját mutatja.
AsyncPageable<BlobItem> blobs = containerClient.GetBlobsAsync();
await foreach (var blob in blobs)
{
// Read the BlobItem and work with it here
}
A tárolóban lévő blobok listáját a listBlobs
következő metódussal szerezheti be BlobContainerClient
: . A háttérben az ügyfél egy vagy több HTTP-hívást indít az Azure-ba a tároló összes blobjának listázásához. Ez a metódus a megvalósító metódust PagedIterable<BlobItem>
Iterable<BlobItem>
adja vissza. Ezt követően egyszerre vagy egy elemoldalon is elolvashatja. Az alábbi kód az eredmények ciklussal for
való olvasásának szabványos mintáját mutatja.
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());
Gyakorlat
Az alkalmazásunk egyik funkciójához le kell kérnünk egy bloblistát az API-ból. A korábban bemutatott mintával listázhatja a tárolóban lévő összes blobot. A lista feldolgozása során minden egyes blob nevét megkapjuk.
A szerkesztő használatával cserélje le GetNames
a BlobStorage.cs fájlt a következő kódra, és mentse a módosításokat.
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;
}
A FilesController
metódus által visszaadott neveket a metódus feldolgozza, hogy a neveket URL-címekké alakítsa. Amikor visszakerül az ügyfélhez, a nevek hivatkozásként jelennek meg a lapon.
A szerkesztő használatával cserélje le a BlobStorage.java
listNames
elemét a következő kódra, majd mentse a módosításokat.
public List<String> listNames() {
return blobContainerClient.listBlobs()
.stream()
.map(BlobItem::getName)
.collect(Collectors.toList());
}
IndexBean
és index.xhmtl
dolgozza fel a metódus által visszaadott neveket, hogy hivatkozásként jelenjenek meg az oldalon.