使用 JavaScript 下载 Blob

本文介绍如何使用适用于 JavaScript 的 Azure 存储客户端库下载 blob。 可以将 Blob 数据下载到各种目标,包括本地文件路径、流或文本字符串。

先决条件

  • 本文中的示例假设你已经设置了一个项目来使用适用于 JavaScript 的 Azure Blob 存储客户端库。 若要了解如何设置项目(包括安装包、导入模块,以及创建授权客户端对象来使用数据资源),请参阅开始使用 Azure Blob 存储和 JavaScript
  • 授权机制必须具有执行下载操作的权限。 若要了解详细信息,请参阅以下 REST API 操作的授权指南:

下载 Blob

可以使用以下任一方法来下载 Blob:

下载到文件路径

以下示例采用 BlobClient.downloadToFile 方法使用文件路径下载 Blob。 此方法仅在 Node.js 运行时中可用:

async function downloadBlobToFile(containerClient, blobName, fileNameWithPath) {

    const blobClient = containerClient.getBlobClient(blobName);
    
    await blobClient.downloadToFile(fileNameWithPath);
    console.log(`download of ${blobName} success`);
}

以流的形式下载

以下示例采用 BlobClient.download 方法通过创建 Node.js 可写流对象并通过管道传递到该流来下载 Blob。

async function downloadBlobAsStream(containerClient, blobName, writableStream) {

    const blobClient = containerClient.getBlobClient(blobName);

    const downloadResponse = await blobClient.download();

    downloadResponse.readableStreamBody.pipe(writableStream);
    console.log(`download of ${blobName} succeeded`);
}

下载到字符串

以下 Node.js 示例采用 BlobClient.download 方法将 Blob 下载到字符串。 在 Node.js 中,blob 数据会以 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());
}

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

如果在浏览器中使用 JavaScript,blob 数据会以承诺 blobBody 的形式返回。 若要了解详细信息,请参阅 BlobClient.download 中的浏览器用法示例。

资源

若要详细了解如何使用适用于 JavaScript 的 Azure Blob 存储客户端库来下载 Blob,请参阅以下资源。

REST API 操作

Azure SDK for JavaScript 包含基于 Azure REST API 而生成的库,允许你通过熟悉的 JavaScript 范例与 REST API 操作进行交互。 用于下载 blob 的客户端库方法使用以下 REST API 操作:

代码示例

查看本文中的代码示例 (GitHub):

客户端库资源