Blobok listázása TypeScript használatával
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. További információ a lapozási fogalmakról: 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: ContainerListBlobsOptions = {
includeCopy: false, // include metadata from previous copies
includeDeleted: false, // include deleted blobs
includeDeletedWithVersions: false, // include deleted blobs with versions
includeLegalHost: false, // include legal host id
includeMetadata: true, // include custom metadata
includeSnapshots: true, // include snapshots
includeTags: true, // include indexable tags
includeUncommittedBlobs: 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: ContainerClient
): Promise<void> {
// page size
const maxPageSize = 2;
let i = 1;
// some options for filtering list
const listOptions: ContainerListBlobsOptions = {
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: false, // include snapshots
includeTags: true, // include indexable tags
includeUncommitedBlobs: false, // include uncommitted blobs
includeVersions: false, // include all blob version
prefix: '' // filter by blob name 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
const marker = response.continuationToken;
// Passing next marker as continuationToken
iterator = containerClient
.listBlobsFlat({
includeMetadata: true,
includeSnapshots: false,
includeTags: true,
includeVersions: false,
prefix: ''
})
.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
async function listBlobHierarchical(
containerClient: ContainerClient,
virtualHierarchyDelimiter = '/'
): Promise<void> {
// page size - artificially low as example
const maxPageSize = 2;
// some options for filtering list
const listOptions: ContainerListBlobsOptions = {
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: false, // include snapshots
includeTags: true, // include indexable tags
includeUncommitedBlobs: false, // include uncommitted blobs
includeVersions: false, // include all blob version
prefix: '' // filter by blob name prefix
};
let i = 1;
console.log(`Folder ${virtualHierarchyDelimiter}`);
for await (const response of containerClient
.listBlobsByHierarchy(virtualHierarchyDelimiter, 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 virtualHierarchyDelimiter from current and next
await listBlobHierarchical(
containerClient,
`${virtualHierarchyDelimiter}${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)
Kódminták
Ügyfélkódtár erőforrásai
Lásd még
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: