JavaScript または TypeScript を使用して BLOB をダウンロードする

この記事では、JavaScript 用の Azure Storage クライアント ライブラリを使用して BLOB をダウンロードする方法について説明します。 BLOB データは、ローカル ファイル パス、ストリーム、テキスト文字列など、さまざまな宛先にダウンロードできます。

前提条件

  • この記事の例では、JavaScript 用の Azure Blob Storage クライアント ライブラリを操作するように設定されたプロジェクトが、既にあることを前提としています。 パッケージのインストール、モジュールのインポート、データ リソースを操作するための認可済みクライアント オブジェクトの作成など、プロジェクトのセットアップについては、「Azure Blob Storage と JavaScript の概要」を参照してください。
  • 認可メカニズムには、ダウンロード操作を実行するためのアクセス許可が必要です。 詳細については、次の REST API 操作の認可ガイダンスを参照してください。

BLOB をダウンロードする

次のいずれかのメソッドを使用して BLOB をダウンロードできます。

ファイル パスにダウンロード

次の例では、BlobClient.downloadToFile メソッドでファイル パスを使用して BLOB をダウンロードします。 このメソッドは、Node.js ランタイムでのみ使用できます。

async function downloadBlobToFile(containerClient, blobName, localFilePath) {

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

ストリームとしてのダウンロード

次の例では、Node.js の書き込み可能なストリーム オブジェクトを作成し、BlobClient.download メソッドを使用してそのストリームにパイプ処理することで、BLOB をダウンロードします。

async function downloadBlobAsStream(containerClient, blobName, writableStream) {

    const blobClient = containerClient.getBlobClient(blobName);

    const downloadResponse = await blobClient.download();

    downloadResponse.readableStreamBody.pipe(writableStream);
}

文字列としてダウンロード

次の 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());
}

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 データは promise blobBody で返されます。 詳細については、BlobClient.download のブラウザー用の使用例を参照してください。

ダウンロード時のデータ転送検証

CRC64-NVME を使用した転送検証では、Azure Blob Storageのクライアント レベルのデータ整合性が提供されるため、アプリケーションによって送信されたデータが、Azureに格納および読み取られるのと同じデータであることを確認できます。 有効にすると、Blob SDK はアップロードおよびダウンロード時に CRC64-NVME チェックサムを計算して検証し、サービスは受信するデータと返すデータについて CRC64-NVME チェックサムを独立して計算して検証します。 検証は各要求と完全なデータ ストリームで実行され、ブロック アップロードや範囲読み取りなどのパーティションでデータが転送された場合でも、BLOB 全体が検証されます。 詳細については、「 構造化ボディフォーマット 」を参照してください。

転送検証オプションは、BlobClientConfig を使用してクライアント レベルで定義できます。BlobClient インスタンスから呼び出されるすべてのメソッドに検証オプションを適用します。 または、 BlobDownloadOptions などのオプションを使用して、操作レベルで転送検証オプションをオーバーライドすることもできます。

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

リソース

JavaScript 用 Azure Blob Storage クライアント ライブラリを使用して BLOB をダウンロードする方法について詳しくは、次のリソースを参照してください。

コード サンプル

この記事のコード サンプルを表示する (GitHub):

REST API の操作

Azure SDK for JavaScript には Azure REST API に基づいて構築されたライブラリが含まれるため、使い慣れた JavaScript パラダイムを通じて REST API 操作を利用できます。 BLOB をダウンロードするためのクライアント ライブラリ メソッドは、次の REST API 操作を使用します。

クライアント ライブラリのリソース

  • この記事は、JavaScript/TypeScript の Blob Storage 開発者ガイドの一部です。 詳細については、「JavaScript/TypeScript アプリの構築」にある開発者ガイドの記事の完全な一覧を参照してください。