Cvičení – získání odkazů na objekty blob
Pokud chcete pracovat s kontejnerem ve službě Blob Storage, použijte BlobContainerClient
objekt. Kromě vytváření kontejnerů, jak jste viděli v poslední lekci, BlobContainerClient
můžete objekt použít také k výpisu objektů blob v kontejneru.
Výpis objektů blob v kontejneru
Pomocí metody získejte seznam objektů blob v kontejneruBlobContainerClient
GetBlobsAsync
. Klient na pozadí provede jedno nebo více volání HTTP do Azure k výpisu všech objektů blob v kontejneru. Vzhledem k tomu, že tato metoda je asynchronní, potřebujete výsledky await
při jejich čtení. Nemusí se všechny vrátit v jednom volání HTTP. Následující kód ukazuje standardní vzor pro čtení výsledků smyčkou foreach
.
AsyncPageable<BlobItem> blobs = containerClient.GetBlobsAsync();
await foreach (var blob in blobs)
{
// Read the BlobItem and work with it here
}
Pomocí metody v BlobContainerClient
kontejneru můžete získat seznam objektů blob v kontejnerulistBlobs
. Klient na pozadí provede jedno nebo více volání HTTP do Azure k výpisu všech objektů blob v kontejneru. Tato metoda vrátí PagedIterable<BlobItem>
, která implementuje Iterable<BlobItem>
. Pak si ji můžete přečíst po jedné položce nebo podle stránky položek. Následující kód ukazuje standardní vzor pro čtení výsledků smyčkou for
.
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());
Cvičení
Jedna z funkcí vaší aplikace vyžaduje získání seznamu objektů blob z rozhraní API. Pomocí dříve zobrazeného vzoru zobrazte seznam všech objektů blob v našem kontejneru. Při zpracování seznamu získáte název každého objektu blob.
V editoru nahraďte GetNames
v BlobStorage.cs následujícím kódem a uložte změny.
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;
}
Zpracuje FilesController
názvy, které tato metoda vrátí, aby se názvy přeměňily na adresy URL. Po návratu do klienta se názvy vykreslují jako hypertextové odkazy na stránce.
V editoru nahraďte listNames
v BlobStorage.java
následujícím kódem a změny uložte.
public List<String> listNames() {
return blobContainerClient.listBlobs()
.stream()
.map(BlobItem::getName)
.collect(Collectors.toList());
}
IndexBean
a index.xhmtl
zpracovat názvy vrácené touto metodou, aby se vykreslovaly jako hypertextové odkazy na stránce.