Partager via


Télécharger un objet blob avec TypeScript

Cet article montre comment télécharger un objet blob en utilisant la Bibliothèque de client Stockage Azure pour JavaScript. Vous pouvez télécharger des données blob vers différentes destinations, notamment un chemin d’accès de fichier local, un flux ou une chaîne de texte.

Prérequis

  • Les exemples de cet article supposent que vous disposez déjà d'un projet configuré pour fonctionner avec la bibliothèque client Azure Blob Storage pour JavaScript. Pour en savoir plus sur la configuration de votre projet, y compris l'installation du package, l'importation de modules et la création d'un objet client autorisé pour travailler avec les ressources de données, consultez Bien démarrer avec Stockage Blob Azure et TypeScript.
  • Le mécanisme d’autorisation doit disposer des autorisations nécessaires pour effectuer une opération de téléchargement. Pour en savoir plus, consultez les conseils d’autorisation pour l’opération d’API REST suivante :

Télécharger un objet blob

Vous pouvez utiliser l’une des méthodes suivantes pour télécharger un objet blob :

Télécharger dans un chemin de fichier

L’exemple suivant télécharge un objet Blob en utilisant un chemin d’accès à un fichier avec la méthode BlobClient.downloadToFile. Cette méthode n’est disponible que dans le 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}`
    );
  }
}

Télécharger en tant que flux

L’exemple suivant télécharge un objet Blob en créant un objet de flux accessible en écriture Node.js puis en passant les données à ce flux avec la méthode 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`);
  }
}

Télécharger dans une chaîne

L’exemple Node.js suivant télécharge un objet blob vers une chaîne de caractères avec la méthode BlobClient.download. Dans Node.js, les données blob sont retournées dans un 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);
  });
}

Si vous utilisez JavaScript dans le navigateur, les données blob sont retournées dans un blobBody Promise. Pour plus d’informations, consultez l’exemple d’utilisation pour navigateurs dans BlobClient.download.

Ressources

Pour en savoir plus sur le téléchargement d’objets blob à l’aide de la bibliothèque cliente Stockage Blob Azure pour JavaScript et TypeScript, consultez les ressources suivantes.

Opérations de l'API REST

Le Kit de développement logiciel (SDK) Azure pour JavaScript et TypeScript contient des bibliothèques qui s’appuient sur l’API REST Azure, vous permettant d’interagir avec des opérations de l’API REST par le biais de paradigmes de langage familiers. Les méthodes de bibliothèque de client pour télécharger des objets blob utilisent l’opération d’API REST suivante :

Exemples de code

Afficher des exemples de code de cet article (GitHub) :

Ressources de bibliothèque cliente