Share via


Scaricare un BLOB con TypeScript

Questo articolo illustra come scaricare un BLOB usando la libreria client di Archiviazione di Azure per JavaScript. È possibile scaricare dati BLOB in varie destinazioni, tra cui un percorso di file locale, un flusso o una stringa di testo.

Prerequisiti

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

Scaricare un BLOB

Per scaricare un BLOB è possibile usare uno qualsiasi dei metodi seguenti:

Scaricare in un percorso di file

L'esempio seguente scarica un BLOB usando un percorso di file con il metodo BlobClient.downloadToFile. Questo metodo è disponibile solo nel runtime Node.js:

async function downloadBlobToFile(
  containerClient: ContainerClient,
  blobName,
  fileNameWithPath
): Promise<void> {
  const blobClient = await containerClient.getBlobClient(blobName);

  const downloadResult = await blobClient.downloadToFile(fileNameWithPath);
  if (!downloadResult.errorCode) {
    console.log(
      `download of ${blobName} success ${downloadResult.blobCommittedBlockCount}`
    );
  }
}

Scaricare come flusso

L'esempio seguente scarica un BLOB creando un oggetto flusso scrivibile di Node.js e quindi inviandolo tramite pipe a tale flusso con il metodo BlobClient.download.

async function downloadBlobAsStream(
  containerClient: ContainerClient,
  blobName,
  writableStream
) {
  const blobClient: BlobClient = await containerClient.getBlobClient(blobName);

  const downloadResponse = await blobClient.download();

  if (!downloadResponse.errorCode && downloadResponse?.readableStreamBody) {
    downloadResponse.readableStreamBody.pipe(writableStream);
    console.log(`download of ${blobName} succeeded`);
  }
}

Scaricare in una stringa

L'esempio di Node.js seguente scarica un BLOB in una stringa con il metodo BlobClient.download. In Node.js i dati BLOB vengono restituiti in un oggetto readableStreamBody.

async function downloadBlobToString(
  containerClient: ContainerClient,
  blobName
): Promise<void> {
  const blobClient: BlobClient = await containerClient.getBlobClient(blobName);

  const downloadResponse: BlobDownloadResponseParsed =
    await blobClient.download();

  if (!downloadResponse.errorCode && downloadResponse.readableStreamBody) {
    const downloaded = await streamToBuffer(
      downloadResponse.readableStreamBody
    );
    if (downloaded) {
      console.log('Downloaded blob content:', downloaded.toString());
    }
  }
}
async function streamToBuffer(readableStream) {
  return new Promise((resolve, reject) => {
    const chunks: Buffer[] = [];

    readableStream.on('data', (data) => {
      const content: Buffer = data instanceof Buffer ? data : Buffer.from(data);
      chunks.push(content);
    });
    readableStream.on('end', () => {
      resolve(Buffer.concat(chunks));
    });
    readableStream.on('error', reject);
  });
}

Se si usa JavaScript nel browser, i dati BLOB vengono restituiti in una promessa blobBody. Per altre informazioni, vedere l'utilizzo di esempio per i browser in BlobClient.download.

Risorse

Per altre informazioni su come scaricare i BLOB tramite la libreria client di Archiviazione BLOB di Azure per JavaScript e TypeScript, vedere le risorse seguenti.

Operazioni dell'API REST

Azure SDK per JavaScript e TypeScript contiene librerie basate sull'API REST di Azure che consentono di interagire con le operazioni dell'API REST tramite paradigmi di linguaggio noti. I metodi della libreria client per scaricare i BLOB usano l'operazione API REST seguente:

Esempi di codice

Vedere gli esempi di codice di questo articolo (GitHub):

Risorse per la libreria client