Elencare i BLOB con JavaScript

Questo articolo illustra come elencare i BLOB usando la libreria client di Archiviazione di Azure per JavaScript.

Prerequisiti

  • Gli esempi di questo articolo presuppongono che sia già stato configurato un progetto per usare la libreria client Archiviazione BLOB di Azure per JavaScript. Per informazioni sulla configurazione del progetto, tra cui l'installazione del pacchetto, l'importazione di moduli e la creazione di un oggetto client autorizzato per l'uso delle risorse dati, vedere Introduzione a Archiviazione BLOB di Azure e JavaScript.
  • Il meccanismo di autorizzazione deve disporre delle autorizzazioni per elencare i BLOB. Per altre informazioni, vedere le linee guida per l'autorizzazione per l'operazione DELL'API REST seguente:

Informazioni sulle opzioni di elenco BLOB

Quando si elencano i BLOB tramite il codice, è possibile specificare diverse opzioni per gestire il modo in cui i risultati vengono restituiti dall'Archiviazione di Azure. È possibile specificare il numero di risultati da restituire in ogni set di risultati e quindi recuperare i set successivi. È possibile specificare un prefisso per restituire i BLOB i cui nomi iniziano con tale carattere o stringa. Ed è possibile elencare i BLOB in una struttura elenco semplice o gerarchica. Un elenco gerarchico restituisce i BLOB come se fossero organizzati in cartelle.

Per elencare i BLOB in un account di archiviazione, creare un contenitoreClient e quindi chiamare uno di questi metodi:

Le funzionalità correlate sono disponibili nei metodi seguenti:

Gestire il numero di risultati restituiti

Per impostazione predefinita, un'operazione di elenco restituisce fino a 5000 risultati alla volta, ma è possibile specificare il numero di risultati che si desidera restituire ogni operazione di presentazione. Gli esempi presentati in questo articolo illustrano come restituire i risultati nelle pagine. Per altre informazioni sui concetti relativi alla paginazione, vedere Paginazione con Azure SDK per JavaScript.

Filtrare i risultati con un prefisso

Per filtrare l'elenco di BLOB, specificare una stringa per la prefix proprietà in ContainerListBlobsOptions. La stringa di prefisso può includere uno o più caratteri. Archiviazione di Azure restituisce solo i BLOB i cui nomi iniziano con tale prefisso.

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

Restituire i metadati

È possibile restituire metadati BLOB con i risultati specificando la includeMetadata proprietà nelle opzioni di elenco.

Confronto tra elenco semplice e gerarchico

I BLOB in Archiviazione di Azure sono organizzati secondo un paradigma semplice, anziché gerarchico (come un file system classico). Tuttavia, è possibile organizzare i BLOB in directory virtuali per simulare una struttura di cartelle. Una directory virtuale costituisce parte del nome del BLOB ed è indicata dal carattere di delimitazione.

Per organizzare i BLOB in directory virtuali, usare un carattere di delimitazione nel nome del BLOB. Il delimitatore predefinito è la barra (/), ma è possibile specificare qualsiasi carattere.

Se i BLOB vengono denominati usando un delimitatore, è possibile scegliere un elenco gerarchico. In un'operazione di elenco gerarchico, Archiviazione di Azure restituisce le directory virtuali e i BLOB sotto l'oggetto padre. È possibile chiamare l'operazione di elenco in modo ricorsivo per attraversare la gerarchia in modo analogo a come si attraverserebbe un file system classico a livello di codice.

Usare un elenco semplice

Per impostazione predefinita, un'operazione di elenco restituisce i BLOB in un elenco semplice. In un elenco semplice, i BLOB non sono organizzati in base alla directory virtuale.

Nell'esempio seguente vengono elencati i BLOB nel contenitore specificato usando un elenco flat.

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

L'output è simile al seguente:

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

Nota

L'output di esempio illustrato presuppone che si disponga di un account di archiviazione con uno spazio dei nomi flat. Se è stata abilitata la funzionalità dello spazio dei nomi gerarchico per l'account di archiviazione, le directory non sono virtuali. Sono invece oggetti concreti, indipendenti. Di conseguenza, le directory vengono visualizzate nell'elenco come BLOB a lunghezza zero.

Per un'opzione di elenco alternativo quando si usa uno spazio dei nomi gerarchico, vedere Elencare il contenuto della directory (Azure Data Lake Storage Gen2).

Usare un elenco gerarchico

Quando si chiama un'operazione di elenco gerarchico, Archiviazione di Azure restituisce le directory virtuali e i BLOB del primo livello della gerarchia.

Per elencare i BLOB gerarchicamente, chiamare il metodo BLOBContainerClient.listBlobsByHierarchy .

Nell'esempio seguente vengono elencati i BLOB nel contenitore specificato usando un elenco gerarchico, con dimensioni di segmento facoltative specificate e scrive il nome del BLOB nella finestra della console.

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

L'output è simile al seguente:

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

Nota

In un'operazione di elenco gerarchico non è possibile elencare gli snapshot BLOB.

Risorse

Per altre informazioni su come elencare i BLOB usando la libreria client Archiviazione BLOB di Azure per JavaScript, vedere le risorse seguenti.

Operazioni dell'API REST

Azure SDK per JavaScript contiene librerie che si basano sull'API REST di Azure, consentendo di interagire con le operazioni dell'API REST tramite paradigmi JavaScript noti. I metodi della libreria client per elencare i BLOB usano l'operazione API REST seguente:

Esempi di codice

Risorse della libreria client

Vedi anche