Blobs weergeven met JavaScript

In dit artikel wordt beschreven hoe u blobs weergeeft met behulp van de Azure Storage-clientbibliotheek voor JavaScript.

Vereisten

  • In de voorbeelden in dit artikel wordt ervan uitgegaan dat u al een project hebt ingesteld om te werken met de Azure Blob Storage-clientbibliotheek voor JavaScript. Zie Aan de slag met Azure Blob Storage en JavaScript voor meer informatie over het instellen van uw project, inclusief pakketinstallatie, het importeren van modules en het maken van een geautoriseerd clientobject voor het werken met gegevensbronnen.
  • Het autorisatiemechanisme moet machtigingen hebben om blobs weer te geven. Zie de autorisatierichtlijnen voor de volgende REST API-bewerking voor meer informatie:

Opties voor blobvermeldingen

Wanneer u blobs uit uw code weergeeft, kunt u een aantal opties opgeven om te beheren hoe resultaten worden geretourneerd vanuit Azure Storage. U kunt het aantal resultaten opgeven dat moet worden geretourneerd in elke set resultaten en vervolgens de volgende sets ophalen. U kunt een voorvoegsel opgeven om blobs te retourneren waarvan de namen beginnen met dat teken of de tekenreeks. En u kunt blobs in een platte lijststructuur of hiërarchisch weergeven. Een hiërarchische vermelding retourneert blobs alsof ze zijn geordend in mappen.

Als u de blobs in een opslagaccount wilt weergeven, maakt u een ContainerClient en roept u een van deze methoden aan:

Gerelateerde functionaliteit vindt u op de volgende manieren:

Beheren hoeveel resultaten worden geretourneerd

Standaard retourneert een vermeldingsbewerking maximaal 5000 resultaten tegelijk, maar u kunt het aantal resultaten opgeven dat elke vermeldingsbewerking moet retourneren. De voorbeelden in dit artikel laten zien hoe u resultaten op pagina's kunt retourneren. Zie Paginering met de Azure SDK voor JavaScript voor meer informatie over pagineringsconcepten.

Resultaten filteren met een voorvoegsel

Als u de lijst met blobs wilt filteren, geeft u een tekenreeks op voor de prefix eigenschap in ContainerListBlobsOptions. De tekenreeks voorvoegsel kan een of meer tekens bevatten. Azure Storage retourneert vervolgens alleen de blobs waarvan de naam begint met dat voorvoegsel.

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

Metagegevens retourneren

U kunt blobmetagegevens met de resultaten retourneren door de includeMetadata eigenschap in de lijstopties op te geven.

Platte vermelding versus hiërarchische vermelding

Blobs in Azure Storage zijn ingedeeld in een plat paradigma in plaats van een hiërarchisch paradigma (zoals een klassiek bestandssysteem). U kunt blobs echter organiseren in virtuele mappen om een mapstructuur na te bootsen . Een virtuele map maakt deel uit van de naam van de blob en wordt aangegeven met het scheidingsteken.

Als u blobs wilt ordenen in virtuele mappen, gebruikt u een scheidingsteken in de blobnaam. Het standaardscheidingsteken is een schuine streep (/), maar u kunt elk teken opgeven als scheidingsteken.

Als u uw blobs een naam geeft met behulp van een scheidingsteken, kunt u ervoor kiezen om blobs hiërarchisch weer te geven. Voor een hiërarchische vermeldingsbewerking retourneert Azure Storage alle virtuele mappen en blobs onder het bovenliggende object. U kunt de vermeldingsbewerking recursief aanroepen om de hiërarchie te doorlopen, vergelijkbaar met de manier waarop u programmatisch een klassiek bestandssysteem zou doorlopen.

Een platte vermelding gebruiken

Standaard retourneert een vermeldingsbewerking blobs in een platte vermelding. In een platte vermelding zijn blobs niet geordend op virtuele map.

In het volgende voorbeeld worden de blobs in de opgegeven container weergegeven met behulp van een platte vermelding.

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

De voorbeelduitvoer is vergelijkbaar met:

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

Notitie

In de voorbeelduitvoer wordt ervan uitgegaan dat u een opslagaccount met een platte naamruimte hebt. Als u de hiërarchische naamruimtefunctie voor uw opslagaccount hebt ingeschakeld, zijn mappen niet virtueel. In plaats daarvan zijn het concrete, onafhankelijke objecten. Als gevolg hiervan worden mappen in de lijst weergegeven als blobs met lengte nul.

Zie Lijstlijstinhoud (Azure Data Lake Storage Gen2) voor een alternatieve vermeldingsoptie bij het werken met een hiërarchische naamruimte.

Een hiërarchische vermelding gebruiken

Wanneer u een vermeldingsbewerking hiërarchisch aanroept, retourneert Azure Storage de virtuele mappen en blobs op het eerste niveau van de hiërarchie.

Als u blobs hiërarchisch wilt weergeven, roept u de methode BlobContainerClient.listBlobsByHierarchy aan .

In het volgende voorbeeld worden de blobs in de opgegeven container weergegeven met behulp van een hiërarchische vermelding, met een optionele segmentgrootte opgegeven, en wordt de naam van de blob naar het consolevenster geschreven.

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

De voorbeelduitvoer is vergelijkbaar met:

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

Notitie

Blob-momentopnamen kunnen niet worden weergegeven in een hiërarchische vermeldingsbewerking.

Resources

Zie de volgende bronnen voor meer informatie over het weergeven van blobs met behulp van de Azure Blob Storage-clientbibliotheek voor JavaScript.

REST API-bewerkingen

De Azure SDK voor JavaScript bevat bibliotheken die zijn gebaseerd op de Azure REST API, zodat u kunt communiceren met REST API-bewerkingen via vertrouwde JavaScript-paradigma's. De clientbibliotheekmethoden voor het weergeven van blobs gebruiken de volgende REST API-bewerking:

Codevoorbeelden

Resources voor clientbibliotheek

Zie ook