Blobok listázása JavaScripttel
Ez a cikk bemutatja, hogyan listázhatja a blobokat a JavaScripthez készült Azure Storage ügyfélkódtár használatával.
Előfeltételek
- A cikkben szereplő példák feltételezik, hogy már rendelkezik egy projekttel, amely a JavaScripthez készült Azure Blob Storage ügyfélkódtárral dolgozik. Ha szeretne többet megtudni a projekt beállításáról, beleértve a csomagtelepítést, a modulok importálását és egy engedélyezett ügyfélobjektum létrehozását az adaterőforrások használatához, olvassa el az Azure Blob Storage és a JavaScript használatának első lépéseit.
- Az engedélyezési mechanizmusnak rendelkeznie kell a blobok listázásához szükséges engedélyekkel. További információkért tekintse meg az alábbi REST API-művelet engedélyezési útmutatóját:
Tudnivalók a bloblista beállításairól
Ha blobokat listáz a kódból, több lehetőséget is megadhat az eredmények Azure Storage-ból való visszaadásának kezelésére. Megadhatja az egyes találathalmazokban visszaadandó eredmények számát, majd lekérheti a következő halmazokat. Megadhat egy előtagot, amely visszaadja azokat a blobokat, amelyeknek a neve ezzel a karakterrel vagy sztringgel kezdődik. A blobokat egy lapos listaszerkezetben vagy hierarchikusan is listázhatja. A hierarchikus lista a blobokat úgy adja vissza, mintha mappákba rendezték volna őket.
A tárfiókban lévő blobok listázásához hozzon létre egy ContainerClientet , majd hívja meg az alábbi módszerek egyikét:
- ContainerClient.listBlobsByHierarcy
- ContainerClient.listBlobsFlat
A kapcsolódó funkciók a következő módszerekben találhatók:
- BlobServiceClient.findBlobsByTag
- ContainerClient.findBlobsByTag
Az eredmény visszaadott értékének kezelése
Alapértelmezés szerint egy listaelem-művelet egyszerre legfeljebb 5000 eredményt ad vissza, de megadhatja, hogy hány találatot szeretne visszaadni az egyes listaműveleteknek. A cikkben bemutatott példák bemutatják, hogyan adhat vissza eredményeket a lapokban. A lapozási fogalmakkal kapcsolatos további információkért lásd : Pagination with the Azure SDK for JavaScript.
Eredmények szűrése előtaggal
A blobok listájának szűréséhez adjon meg egy sztringet a prefix
ContainerListBlobsOptions tulajdonsághoz. Az előtag sztringje egy vagy több karaktert tartalmazhat. Az Azure Storage ezután csak azokat a blobokat adja vissza, amelyeknek a neve ezzel az előtaggal kezdődik.
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
};
Metaadatok visszaadva
A blob metaadatait az eredményekkel együtt a listabeállításokban megadott tulajdonság megadásával includeMetadata
is visszaadhatja.
Egybesimított lista és hierarchikus lista
Az Azure Storage-blobok hierarchikus paradigma helyett egy lapos paradigma szerint vannak rendszerezve (például egy klasszikus fájlrendszerben). A blobokat azonban virtuális könyvtárakba rendezheti a mappastruktúra utánzásához. A virtuális címtár a blob nevének része, és a határoló karakter jelzi.
A blobok virtuális könyvtárakba rendezéséhez használjon elválasztó karaktert a blob nevében. Az alapértelmezett elválasztó karakter egy perjel (/), de bármely karaktert megadhat elválasztóként.
Ha elválasztójel használatával nevezi el a blobokat, választhatja, hogy hierarchikusan listázni szeretné a blobokat. Hierarchikus listázási művelet esetén az Azure Storage visszaadja a szülőobjektum alatti virtuális könyvtárakat és blobokat. A listázási műveletet rekurzívan hívhatja meg a hierarchia átjárásához, hasonlóan ahhoz, ahogyan egy klasszikus fájlrendszert programozott módon léptetne át.
Egyszerű lista használata
A listázási művelet alapértelmezés szerint egy egyszerű lista blobjait adja vissza. Egy egyszerű lista esetében a blobok nem virtuális címtárak szerint vannak rendszerezve.
Az alábbi példa a megadott tárolóban lévő blobokat sorolja fel egy egyszerű listaelem használatával.
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}`);
}
}
A mintakimenet a következőhöz hasonló:
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
Feljegyzés
A megjelenített mintakimenet feltételezi, hogy egy egyszerű névtérrel rendelkező tárfiókkal rendelkezik. Ha engedélyezte a tárfiók hierarchikus névtér funkcióját, a címtárak nem virtuálisak. Ehelyett konkrét, független objektumok. Ennek eredményeképpen a címtárak nulla hosszúságú blobként jelennek meg a listában.
A hierarchikus névtér használatakor alternatív listabeállítást a címtár tartalmának listázása (Azure Data Lake Storage Gen2) című témakörben talál.
Hierarchikus lista használata
Ha hierarchikusan meghív egy listázási műveletet, az Azure Storage a hierarchia első szintjén adja vissza a virtuális könyvtárakat és blobokat.
A blobok hierarchikus listázásához hívja meg a BlobContainerClient.listBlobsByHierarchy metódust .
Az alábbi példa egy hierarchikus listaelem használatával sorolja fel a megadott tárolóban lévő blobokat egy választható szegmensmérettel, és beírja a blob nevét a konzolablakba.
// 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}`);
}
}
}
A mintakimenet a következőhöz hasonló:
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
Feljegyzés
A blob-pillanatképek nem szerepelhetnek hierarchikus listaelem-műveletben.
Források
Ha többet szeretne megtudni arról, hogyan listázhatja a blobokat a JavaScripthez készült Azure Blob Storage ügyfélkódtár használatával, tekintse meg az alábbi erőforrásokat.
REST API-műveletek
Az Azure SDK for JavaScript olyan kódtárakat tartalmaz, amelyek az Azure REST API-ra épülnek, lehetővé téve a REST API-műveletek használatát ismert JavaScript-paradigmákon keresztül. A blobok felsorolására szolgáló ügyfélkódtár-metódusok a következő REST API-műveletet használják:
- Blobok listázása (REST API)