Ćwiczenie — pobieranie odwołań do obiektu blob
Aby wchodzić w interakcje z kontenerem BlobContainerClient
w usłudze Blob Storage, użyj obiektu . Oprócz tworzenia kontenerów, jak pokazano w ostatniej lekcji, BlobContainerClient
obiekt może być również używany do wyświetlania listy obiektów blob w kontenerze.
Wyświetlanie listy obiektów blob w kontenerze
Pobierz listę obiektów blob w kontenerze przy użyciu BlobContainerClient
metody .s GetBlobsAsync
. W tle klient wykonuje co najmniej jedno wywołanie HTTP na platformie Azure, aby wyświetlić listę wszystkich obiektów blob w kontenerze. Ponieważ ta metoda jest asynchroniczna, należy uzyskać await
wyniki podczas ich odczytywania. Mogą nie być zwracane w jednym wywołaniu HTTP. Poniższy kod przedstawia standardowy wzorzec odczytywania wyników za pomocą foreach
pętli.
AsyncPageable<BlobItem> blobs = containerClient.GetBlobsAsync();
await foreach (var blob in blobs)
{
// Read the BlobItem and work with it here
}
Listę obiektów blob w kontenerze można uzyskać przy użyciu listBlobs
metody w BlobContainerClient
pliku . W tle klient wykonuje co najmniej jedno wywołanie HTTP na platformie Azure, aby wyświetlić listę wszystkich obiektów blob w kontenerze. Ta metoda zwraca PagedIterable<BlobItem>
element implementujący Iterable<BlobItem>
element . Następnie możesz odczytać jeden element naraz lub według strony elementów. Poniższy kod przedstawia standardowy wzorzec odczytywania wyników za pomocą for
pętli.
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());
Ćwiczenie
Jedna z funkcji w aplikacji wymaga pobrania listy obiektów blob z interfejsu API. Użyj wzorca pokazanego wcześniej, aby wyświetlić listę wszystkich obiektów blob w naszym kontenerze. Podczas przetwarzania listy uzyskasz nazwy poszczególnych obiektów blob.
Za pomocą edytora zastąp ciąg GetNames
w BlobStorage.cs następującym kodem i zapisz zmiany.
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;
}
Przetwarza FilesController
nazwy, które ta metoda zwraca, aby przekształcić nazwy w adresy URL. Po powrocie do klienta nazwy są renderowane jako hiperlinki na stronie.
Za pomocą edytora zastąp metodę listNames
w pliku BlobStorage.java
poniższym kodem i zapisz wprowadzone zmiany.
public List<String> listNames() {
return blobContainerClient.listBlobs()
.stream()
.map(BlobItem::getName)
.collect(Collectors.toList());
}
IndexBean
i index.xhmtl
przetwarzaj nazwy zwracane przez tę metodę, które mają być renderowane jako hiperlinki na stronie.