Scaricare un BLOB con JavaScript o 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 JavaScript.
  • 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:

Scarica un blob

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

Scarica in un percorso 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, blobName, localFilePath) {

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

Scaricare in streaming

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

    const blobClient = containerClient.getBlobClient(blobName);

    const downloadResponse = await blobClient.download();

    downloadResponse.readableStreamBody.pipe(writableStream);
}

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

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.

Convalida del trasferimento dei dati al download

La convalida del trasferimento con CRC64 fornisce l'integrità dei dati a livello di client per Archiviazione BLOB di Azure, consentendo di verificare che i dati inviati dall'applicazione siano gli stessi dati archiviati e letti da Azure. Se abilitato, l'SDK BLOB calcola e convalida i checksum CRC64 durante le operazioni di caricamento e download, mentre il servizio calcola e convalida in modo indipendente i checksum CRC64 per i dati ricevuti e restituiti. La convalida viene eseguita su ogni richiesta e nel flusso di dati completo, assicurandosi che l'intero BLOB venga verificato anche quando i dati vengono trasferiti in partizioni, ad esempio caricamenti in blocchi o letture a intervalli. Per altri dettagli, vedere Structured Body Format (Formato corpo strutturato ).

Le opzioni di convalida del trasferimento possono essere definite a livello di client usando BlobClientConfig, che applica le opzioni di convalida a tutti i metodi chiamati da un'istanza BlobClient . In alternativa, è possibile eseguire l'override delle opzioni di convalida del trasferimento a livello di operazione tramite opzioni, ad esempio BlobDownloadOptions.

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

Risorse

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

Esempi di codice

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

Operazioni dell'API REST

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

Risorse della libreria client

  • Questo articolo fa parte della guida per sviluppatori di Archiviazione BLOB per JavaScript/TypeScript. Per altre informazioni, vedere l'elenco completo degli articoli della guida per sviluppatori in Creare l'app JavaScript/TypeScript.