Megosztás a következőn keresztül:


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ára. 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.

Ha egy tárolóban lévő blobokat egy egyszerű listaelem használatával szeretné listázni, hívja meg a következő metódust:

Ha hierarchikus lista használatával szeretné listázni a tárolóban lévő blobokat, hívja meg a következő metódust:

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. Az előtag sztringjének sample- átadása például csak azokat a blobokat adja vissza, amelyeknek a neve a következővel sample-kezdődik: .

Blob metaadatainak vagy egyéb adatainak belefoglalása

Ha blob-metaadatokat szeretne hozzáadni az eredményekhez, állítsa a tulajdonságot a includeMetadata ContainerListBlobsOptions részeként.true A megfelelő tulajdonság beállításával pillanatképeket, címkéket vagy verziókat is felvehet az eredményekbe true.

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 blobokat nem a virtuális címtár rendezi.

Az alábbi példa a megadott tárolóban lévő blobokat sorolja fel egy egyszerű listaelem használatával. Ez a példa blob-pillanatképeket és blob metaadatokat tartalmaz, ha léteznek:

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}`);
      }
    }
  }
}

A mintakimenet a következőhöz hasonló:

Blobs flat list (by page):
- Page:
  - a1
  - a2
- Page:
  - folder1/b1
  - folder1/b2
- Page:
  - folder2/sub1/c
  - 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ártartalom listázása (Azure Data Lake Storage) 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 használja a következő módszert:

Az alábbi példa a megadott tárolóban lévő blobokat sorolja fel hierarchikus listaelem használatával. Ebben a példában az előtag paramétere kezdetben üres sztringre van állítva a tároló összes blobjának listázásához. A példa ezután rekurzívan meghívja a listázási műveletet a virtuális címtár hierarchiájának és a listabloboknak a bejárásához.

// 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}`);
    }
  }
}

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.

Kódminták

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:

Ügyfélkódtár erőforrásai

Lásd még