Wyświetlanie listy obiektów blob za pomocą języka JavaScript
W tym artykule przedstawiono sposób wyświetlania listy obiektów blob przy użyciu biblioteki klienta usługi Azure Storage dla języka JavaScript.
Wymagania wstępne
- W przykładach w tym artykule założono, że masz już skonfigurowany projekt do pracy z biblioteką klienta Azure Blob Storage dla języka JavaScript. Aby dowiedzieć się więcej na temat konfigurowania projektu, w tym instalowania pakietów, importowania modułów i tworzenia autoryzowanego obiektu klienta do pracy z zasobami danych, zobacz Wprowadzenie do Azure Blob Storage i języka JavaScript.
- Mechanizm autoryzacji musi mieć uprawnienia do wyświetlania listy obiektów blob. Aby dowiedzieć się więcej, zobacz wskazówki dotyczące autoryzacji dla następującej operacji interfejsu API REST:
Informacje o opcjach wyświetlania listy obiektów blob
Podczas wyświetlania listy obiektów blob z kodu można określić wiele opcji zarządzania sposobem zwracania wyników z usługi Azure Storage. Można określić liczbę wyników do zwrócenia w każdym zestawie wyników, a następnie pobrać kolejne zestawy. Można określić prefiks do zwracania obiektów blob, których nazwy zaczynają się od tego znaku lub ciągu. Można również wyświetlać obiekty blob w płaskiej strukturze listy lub hierarchicznie. Hierarchiczna lista zwraca obiekty blob tak, jakby były zorganizowane w foldery.
Aby wyświetlić listę obiektów blob na koncie magazynu, utwórz obiekt ContainerClient , a następnie wywołaj jedną z następujących metod:
- ContainerClient. listBlobsByHierarcy
- ContainerClient. listBlobsFlat
Powiązane funkcje można znaleźć w następujących metodach:
- BlobServiceClient. findBlobsByTag
- ContainerClient. findBlobsByTag
Zarządzanie liczbą zwracanych wyników
Domyślnie operacja wyświetlania listy zwraca maksymalnie 5000 wyników jednocześnie, ale można określić liczbę wyników, które mają zostać zwrócone przez każdą operację wyświetlania listy. Przykłady przedstawione w tym artykule pokazują, jak zwracać wyniki na stronach. Aby dowiedzieć się więcej na temat pojęć dotyczących stronicowania, zobacz Pagination with the Azure SDK for JavaScript (Stronicowanie przy użyciu zestawu Azure SDK dla języka JavaScript).
Filtrowanie wyników przy użyciu prefiksu
Aby filtrować listę obiektów blob, określ ciąg właściwości prefix
w obszarze ContainerListBlobsOptions. Ciąg prefiksu może zawierać co najmniej jeden znak. Następnie usługa Azure Storage zwraca tylko obiekty blob, których nazwy zaczynają się od tego prefiksu.
const listOptions = {
includeCopy: false, // include metadata from previous copies
includeDeleted: false, // include deleted blobs
includeDeletedWithVersions: false, // include deleted blobs with versions
includeLegalHold: false, // include legal hold
includeMetadata: true, // include custom metadata
includeSnapshots: true, // include snapshots
includeTags: true, // include indexable tags
includeUncommitedBlobs: false, // include uncommitted blobs
includeVersions: false, // include all blob version
prefix: '' // filter by blob name prefix
};
Zwracanie metadanych
Metadane obiektu blob można zwrócić z wynikami, określając includeMetadata
właściwość w opcjach listy.
Lista płaska a lista hierarchiczna
Obiekty blob w usłudze Azure Storage są zorganizowane w modelu płaskim, a nie w modelu hierarchicznym (na przykład w klasycznym systemie plików). Można jednak organizować obiekty blob w katalogi wirtualne , aby naśladować strukturę folderów. Katalog wirtualny stanowi część nazwy obiektu blob i jest wskazywany przez znak ogranicznika.
Aby zorganizować obiekty blob w katalogach wirtualnych, użyj znaku ogranicznika w nazwie obiektu blob. Domyślny znak ogranicznika to ukośnik (/), ale można określić dowolny znak jako ogranicznik.
Jeśli nazywasz obiekty blob za pomocą ogranicznika, możesz wybrać hierarchię wyświetlania listy obiektów blob. W przypadku operacji listy hierarchicznej usługa Azure Storage zwraca wszystkie katalogi wirtualne i obiekty blob pod obiektem nadrzędnym. Operację wyświetlania listy można wywołać cyklicznie, aby przejść przez hierarchię, podobnie jak w przypadku programowego przechodzenia przez klasyczny system plików.
Korzystanie z listy płaskiej
Domyślnie operacja wyświetlania listy zwraca obiekty blob na płaskiej liście. Na liście płaskiej obiekty blob nie są zorganizowane przez katalog wirtualny.
Poniższy przykład przedstawia listę obiektów blob w określonym kontenerze przy użyciu listy płaskiej.
async function listBlobsFlatWithPageMarker(containerClient) {
// page size - artificially low as example
const maxPageSize = 2;
let i = 1;
let marker;
// some options for filtering list
const listOptions = {
includeMetadata: false,
includeSnapshots: false,
includeTags: false,
includeVersions: false,
prefix: ''
};
let iterator = containerClient.listBlobsFlat(listOptions).byPage({ maxPageSize });
let response = (await iterator.next()).value;
// Prints blob names
for (const blob of response.segment.blobItems) {
console.log(`Flat listing: ${i++}: ${blob.name}`);
}
// Gets next marker
marker = response.continuationToken;
// Passing next marker as continuationToken
iterator = containerClient.listBlobsFlat().byPage({
continuationToken: marker,
maxPageSize: maxPageSize * 2
});
response = (await iterator.next()).value;
// Prints next blob names
for (const blob of response.segment.blobItems) {
console.log(`Flat listing: ${i++}: ${blob.name}`);
}
}
Przykładowe dane wyjściowe są podobne do następujących:
Flat listing: 1: a1
Flat listing: 2: a2
Flat listing: 3: folder1/b1
Flat listing: 4: folder1/b2
Flat listing: 5: folder2/sub1/c
Flat listing: 6: folder2/sub1/d
Uwaga
Pokazane przykładowe dane wyjściowe zakładają, że masz konto magazynu z płaską przestrzenią nazw. Jeśli włączono funkcję hierarchicznej przestrzeni nazw dla konta magazynu, katalogi nie są wirtualne. Zamiast tego są to betonowe, niezależne obiekty. W związku z tym katalogi są wyświetlane na liście jako obiekty blob o zerowej długości.
Aby uzyskać alternatywną opcję wyświetlania listy podczas pracy z hierarchiczną przestrzenią nazw, zobacz Wyświetlanie listy zawartości katalogu (Azure Data Lake Storage Gen2).
Używanie listy hierarchicznej
Po wywołaniu operacji listy hierarchicznie usługa Azure Storage zwraca katalogi wirtualne i obiekty blob na pierwszym poziomie hierarchii.
Aby wyświetlić hierarchię obiektów blob, wywołaj metodę BlobContainerClient.listBlobsByHierarchy .
Poniższy przykład przedstawia listę obiektów blob w określonym kontenerze przy użyciu listy hierarchicznej z określonym opcjonalnym rozmiarem segmentu i zapisuje nazwę obiektu blob w oknie konsoli.
// Recursively list virtual folders and blobs
// Pass an empty string for prefixStr to list everything in the container
async function listBlobHierarchical(containerClient, prefixStr) {
// page size - artificially low as example
const maxPageSize = 2;
// some options for filtering list
const listOptions = {
includeMetadata: false,
includeSnapshots: false,
includeTags: false,
includeVersions: false,
prefix: prefixStr
};
let delimiter = '/';
let i = 1;
console.log(`Folder ${delimiter}${prefixStr}`);
for await (const response of containerClient
.listBlobsByHierarchy(delimiter, listOptions)
.byPage({ maxPageSize })) {
console.log(` Page ${i++}`);
const segment = response.segment;
if (segment.blobPrefixes) {
// Do something with each virtual folder
for await (const prefix of segment.blobPrefixes) {
// build new prefix from current virtual folder
await listBlobHierarchical(containerClient, prefix.name);
}
}
for (const blob of response.segment.blobItems) {
// Do something with each blob
console.log(`\tBlobItem: name - ${blob.name}`);
}
}
}
Przykładowe dane wyjściowe są podobne do następujących:
Folder /
Page 1
BlobItem: name - a1
BlobItem: name - a2
Page 2
Folder /folder1/
Page 1
BlobItem: name - folder1/b1
BlobItem: name - folder1/b2
Folder /folder2/
Page 1
Folder /folder2/sub1/
Page 1
BlobItem: name - folder2/sub1/c
BlobItem: name - folder2/sub1/d
Page 2
BlobItem: name - folder2/sub1/e
Uwaga
Nie można wyświetlać migawek obiektów blob w operacji hierarchicznej listy.
Zasoby
Aby dowiedzieć się więcej na temat wyświetlania listy obiektów blob przy użyciu biblioteki klienta Azure Blob Storage dla języka JavaScript, zobacz następujące zasoby.
Operacje interfejsu API REST
Zestaw Azure SDK dla języka JavaScript zawiera biblioteki, które bazują na interfejsie API REST platformy Azure, co umożliwia interakcję z operacjami interfejsu API REST za pomocą znanych paradygmatów języka JavaScript. Metody biblioteki klienta do wyświetlania listy obiektów blob używają następującej operacji interfejsu API REST:
- Wyświetlanie listy obiektów blob (interfejs API REST)