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.
Megjegyzés:
Ez a gyakorlat nem kötelező. Ha el szeretné végezni ezt a gyakorlatot, először létre kell hoznia egy Azure-előfizetést. Ha nem rendelkezik Azure-fiókkal, vagy jelenleg nem szeretne létrehozni egyet, elolvashatja az utasításokat, hogy megértse a megjelenő információkat.
Tároló blobjainak listázása
A tárolóban lévő blobok listájának lekérése BlobContainerClient a metódus használatávalGetBlobsAsync. 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 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 listNamesBlobStorage.java 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.