Delen via


Een blob downloaden met TypeScript

In dit artikel wordt beschreven hoe u een blob downloadt met behulp van de Azure Storage-clientbibliotheek voor JavaScript. U kunt blobgegevens downloaden naar verschillende bestemmingen, waaronder een lokaal bestandspad, een stroom of een tekenreeks.

Vereisten

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

Blob downloaden

U kunt een van de volgende methoden gebruiken om een blob te downloaden:

Downloaden naar een bestandspad

In het volgende voorbeeld wordt een blob gedownload met behulp van een bestandspad met de methode BlobClient.downloadToFile . Deze methode is alleen beschikbaar in de Node.js runtime:

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

Downloaden als een stream

In het volgende voorbeeld wordt een blob gedownload door een Node.js beschrijfbaar streamobject te maken en vervolgens met de methode BlobClient.download naar die stream te gaan.

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

Downloaden naar een tekenreeks

In het volgende Node.js voorbeeld wordt een blob gedownload naar een tekenreeks met de methode BlobClient.download . In Node.js worden blobgegevens geretourneerd in een 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);
  });
}

Als u met JavaScript in de browser werkt, worden blobgegevens geretourneerd in een promise blobBody. Zie het voorbeeldgebruik voor browsers op BlobClient.download voor meer informatie.

Resources

Zie de volgende resources voor meer informatie over het downloaden van blobs met behulp van de Azure Blob Storage-clientbibliotheek voor JavaScript en TypeScript.

REST API-bewerkingen

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

  • Blob ophalen (REST API)

Codevoorbeelden

Codevoorbeelden uit dit artikel bekijken (GitHub):

Clientbibliotheekbronnen