Télécharger un objet blob avec JavaScript ou TypeScript

Cet article explique comment télécharger un blob à l’aide de 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 Stockage Blob Azure pour JavaScript. Pour en savoir plus sur la configuration de votre projet, y compris l'installation de packages, l'importation de modules et la création d'un objet client autorisé pour travailler avec des ressources de données, consultez Démarrer avec Stockage Blob Azure et JavaScript.
  • 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 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, blobName, localFilePath) {

    const blobClient = containerClient.getBlobClient(blobName);
    
    await blobClient.downloadToFile(localFilePath);
}

Télécharger sous forme de 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, blobName, writableStream) {

    const blobClient = containerClient.getBlobClient(blobName);

    const downloadResponse = await blobClient.download();

    downloadResponse.readableStreamBody.pipe(writableStream);
}

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, blobName) {

    const blobClient = containerClient.getBlobClient(blobName);

    const downloadResponse = await blobClient.download();

    const downloaded = await streamToBuffer(downloadResponse.readableStreamBody);
    console.log('Downloaded blob content:', downloaded.toString());
}

function streamToBuffer(readableStream) {
    return new Promise((resolve, reject) => {
        const chunks = [];
        readableStream.on('data', (data) => {
            chunks.push(data instanceof Buffer ? data : Buffer.from(data));
        });
        readableStream.on('end', () => {
            resolve(Buffer.concat(chunks));
        });
        readableStream.on('error', reject);
    });
}

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

Validation du transfert de données lors du téléchargement

La validation de transfert avec CRC64-NVME fournit l’intégrité des données au niveau du client pour Stockage Blob Azure, ce qui vous permet de vérifier que les données envoyées par votre application sont les mêmes données stockées et lues à partir de Azure. Lorsqu’il est activé, le SDK Blob calcule et valide les sommes de contrôle CRC64-NVME pendant les opérations de chargement et de téléchargement, tandis que le service, de son côté, calcule et valide les sommes de contrôle CRC64-NVME pour les données qu’il reçoit et renvoie. La validation est effectuée sur chaque requête et sur le flux de données complet, ce qui garantit que l’ensemble de l’objet blob est vérifié même lorsque les données sont transférées dans des partitions telles que les chargements de bloc ou les lectures à plage. Pour plus d’informations, consultez Format de corps structuré .

Les options de validation de transfert peuvent être définies au niveau du client à l’aide de BlobClientConfig, qui applique les options de validation à toutes les méthodes appelées à partir d’une instance BlobClient . Vous pouvez également remplacer les options de validation de transfert au niveau de l’opération via des options telles que BlobDownloadOptions.

const blobServiceClient = new BlobServiceClient(
   `https://${account}.blob.core.windows.net`,
   new DefaultAzureCredential(),
   {
     uploadContentChecksumAlgorithm: "StorageCrc64",
     downloadContentChecksumAlgorithm: "StorageCrc64",
   }
);

Ressources

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

Exemples de code

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

Opérations de l'API REST

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

Ressources de bibliothèque cliente

  • Cet article fait partie du guide du développeur Stockage Blob pour JavaScript/TypeScript. Pour en savoir plus, consultez la liste complète des articles du guide du développeur sur Créez votre application JavaScript/TypeScript.