Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek ukazuje, jak zobrazit objekty blob pomocí klientské knihovny Azure Storage pro JavaScript.
Požadavky
- Příklady v tomto článku předpokládají, že už máte projekt nastavený tak, aby fungoval s klientskou knihovnou Azure Blob Storage pro JavaScript. Další informace o nastavení projektu, včetně instalace balíčku, importu modulů a vytvoření autorizovaného klientského objektu pro práci s datovými prostředky, najdete v tématu Začínáme se službou Azure Blob Storage a JavaScriptem.
- Autorizační mechanismus musí mít oprávnění k výpisu blobů. Další informace najdete v pokynech k autorizaci pro následující operaci rozhraní REST API:
Informace o možnostech výpisu objektů blob
Když vypíšete objekty blob z kódu, můžete zadat několik možností pro správu způsobu vrácení výsledků ze služby Azure Storage. Můžete zadat počet výsledků, které se mají vrátit v každé sadě výsledků, a pak načíst následující sady. Můžete zadat předponu pro vrácení objektů blob, jejichž názvy začínají tímto znakem nebo řetězcem. Objekty blob můžete vypsat v ploché struktuře výpisu nebo hierarchicky. Hierarchický výpis vrací bloby, jako by byly uspořádány do složek.
Pokud chcete vypsat objekty blob v kontejneru pomocí plochého výpisu, zavolejte následující metodu:
Pokud chcete zobrazit seznam objektů blob v kontejneru pomocí hierarchického výpisu, zavolejte následující metodu:
- ContainerClient.listBlobsByHierarchy
Správa počtu vrácených výsledků
Ve výchozím nastavení vrátí operace výpisu najednou až 5 000 výsledků, ale můžete zadat počet výsledků, které má každá operace výpisu vrátit. Příklady uvedené v tomto článku ukazují, jak vrátit výsledky na stránkách. Další informace o konceptech stránkování najdete v tématu Stránkování pomocí sady Azure SDK pro JavaScript.
Filtrování výsledků pomocí předpony
Chcete-li filtrovat seznam blobů, zadejte řetězec pro vlastnost prefix v ContainerListBlobsOptions. Řetězec předpony může obsahovat jeden nebo více znaků. Azure Storage vrací pouze ty bloby, jejichž názvy začínají tímto prefixem. Například předání předpony sample- vrátí pouze objekty blob, které začínají sample-.
Zahrnutí metadat objektů blob nebo jiných informací
Pokud chcete zahrnout metadata objektů blob k výsledkům, nastavte vlastnost includeMetadata na true jako součást ContainerListBlobsOptions. Do výsledků můžete zahrnout také snímky, značky nebo verze nastavením příslušné vlastnosti na true hodnotu.
Plochý výpis versus hierarchický výpis
Objekty blob ve službě Azure Storage jsou uspořádané do plochého paradigmatu místo hierarchického paradigmatu (jako je klasický systém souborů). Nicméně můžete bloby organizovat do virtuálních adresářů , které napodobují strukturu složek. Virtuální adresář tvoří část názvu objektu blob a je označen znakem oddělovače.
Pokud chcete objekty blob uspořádat do virtuálních adresářů, použijte v názvu objektu blob znak oddělovače. Výchozí znak oddělovače je lomítko (/), ale jako oddělovač můžete zadat libovolný znak.
Pokud pojmenováváte své bloby pomocí oddělovače, můžete zvolit hierarchický seznam blobů. Pro hierarchickou operaci výpisu vrátí Azure Storage všechny virtuální adresáře a bloby, které se nacházejí pod nadřazeným objektem. Operaci výpisu můžete volat rekurzivně a procházet hierarchii podobně jako při procházení klasického systému souborů prostřednictvím kódu programu.
Použití plochého výpisu
Operace výpisu ve výchozím nastavení vrací objekty blob v plochém výpisu. V plochém výpisu nejsou bloby uspořádány podle virtuálního adresáře.
Následující příklad uvádí bloby ve specifikovaném kontejneru pomocí plochého seznamu. Tento příklad zahrnuje snímky a metadata blobů, pokud existují:
async function listBlobsFlat(containerClient) {
const maxPageSize = 2;
// Some options for filtering results
const listOptions = {
includeMetadata: true,
includeSnapshots: true,
prefix: '' // Filter results by blob name prefix
};
console.log("Blobs flat list (by page):");
for await (const response of containerClient
.listBlobsFlat(listOptions)
.byPage({ maxPageSize })) {
console.log("- Page:");
if (response.segment.blobItems) {
for (const blob of response.segment.blobItems) {
console.log(` - ${blob.name}`);
}
}
}
}
Ukázkový výstup je podobný následujícímu:
Blobs flat list (by page):
- Page:
- a1
- a2
- Page:
- folder1/b1
- folder1/b2
- Page:
- folder2/sub1/c
- folder2/sub1/d
Poznámka:
Zobrazený ukázkový výstup předpokládá, že máte účet úložiště s jednoduchým oborem názvů. Pokud povolíte funkci hierarchického jmenného prostoru pro svůj úložný účet, adresáře nejsou virtuální. Místo toho jsou to konkrétní, nezávislé objekty. V důsledku toho se adresáře v seznamu zobrazují jako objekty blob nulové délky.
Alternativní možnost výpisu při práci s hierarchickým oborem názvů najdete v tématu Výpis obsahu adresáře (Azure Data Lake Storage).
Použití hierarchického výpisu
Při volání operace výpisu hierarchicky vrátí Azure Storage virtuální adresáře a objekty blob na první úrovni hierarchie.
Pokud chcete zobrazit seznam objektů blob hierarchicky, použijte následující metodu:
Následující příklad uvádí objekty blob v zadaném kontejneru pomocí hierarchického výpisu. V tomto příkladu je parametr předpony zpočátku nastaven na prázdný řetězec k vypsání všech objektů blob v kontejneru. Příklad pak volá operaci výpisu rekurzivně pro procházení hierarchie virtuálních adresářů a výpis objektů blob.
// Recursively list virtual folders and blobs
async function listBlobHierarchical(containerClient, delimiter='/') {
const maxPageSize = 20;
// Some options for filtering list
const listOptions = {
prefix: '' // Filter results by blob name prefix
};
let i = 1;
console.log(`Folder ${delimiter}`);
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 delimiter from current and next
await listBlobHierarchical(containerClient, `${delimiter}${prefix.name}`);
}
}
for (const blob of response.segment.blobItems) {
// Do something with each blob
console.log(`\tBlobItem: name - ${blob.name}`);
}
}
}
Ukázkový výstup je podobný následujícímu:
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
Poznámka:
Snímky blobů nelze vypsat v operaci hierarchického výpisu.
Seznam blobů ve formátu Apache Arrow (náhled)
Important
Seznam blobů ve formátu Apache Arrow je momentálně v PREVIEWS. Tento scénář vyžaduje beta (náhledovou) verzi klientské knihovny Azure Blob Storage pro JavaScript (například @azure/storage-blob12.34.0-beta.1 nebo novější preview verzi). Funkce ve verzi Preview jsou poskytovány bez smlouvy o úrovni služeb a nedoporučuje se pro produkční úlohy. Některé funkce nemusí být podporovány nebo mohou mít omezené schopnosti. Další informace najdete v dodatečných podmínkách použití pro verze Preview v Microsoft Azure.
Tato schopnost je postavena na existujícím List Blobs API. Místo výchozího XML používá kompaktní, sloupcový formát Apache Arrow jako formát odpovědi na drátu. Povolíte to nastavením jedné možnosti při volání výpisu kontejnerů. Sada SDK pro JavaScript dekóduje Apache Arrow na pozadí a stále vrací stejné objekty položek blob. Tento přístup zlepšuje propustnost výpisů a snižuje CPU na straně klienta při enumeraci velkých kontejnerů. Zachovává kontrakt odpovědi, na který aplikace spoléhají.
Warning
Seznamování blobů ve formátu Apache Arrow není podporováno na úložných účtech, které mají povolený hierarchický jmenný prostor (Azure Data Lake Storage).
Pro požadavek na výsledky ve formátu Apache Arrow nastavte responseFormat vlastnost možností výpisu na StorageResponseFormat.Arrow, poté tyto možnosti předejte ContainerClient.listBlobsFlat. Importujte StorageResponseFormat enum z @azure/storage-blob.
Následující příklad uvádí bloby v kontejneru a požaduje výsledky ve formátu Apache Arrow:
const { StorageResponseFormat } = require("@azure/storage-blob");
const options = {
prefix: "FolderA/",
responseFormat: StorageResponseFormat.Arrow,
};
for await (const blob of containerClient.listBlobsFlat(options)) {
console.log("Blob name: " + blob.name);
}
Zdroje informací
Chcete-li se dozvědět více o tom, jak zobrazit bloby pomocí klientské knihovny Azure Blob Storage pro JavaScript, podívejte se na následující zdroje.
Ukázky kódu
- Prohlédněte si ukázky kódu JavaScriptu a TypeScriptu z tohoto článku na GitHub.
Operace rozhraní REST API
Azure SDK pro JavaScript obsahuje knihovny, které staví na Azure REST API. Použitím těchto knihoven můžete komunikovat s operacími REST API prostřednictvím známých JavaScriptových paradigmat. Metody klientské knihovny pro výpis objektů blob používají následující operaci rozhraní REST API:
- Seznam blobů (REST API)