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 작업

JavaScript용 Azure SDK에는 Azure REST API를 기반으로 빌드되는 라이브러리가 포함되어 있으므로 익숙한 JavaScript 패러다임을 통해 REST API 작업과 상호 작용할 수 있습니다. Blob을 다운로드하기 위한 클라이언트 라이브러리 메서드는 다음 REST API 작업을 사용합니다.

클라이언트 라이브러리 리소스

  • 이 문서는 JavaScript/TypeScript용 Blob Storage 개발자 가이드의 일부입니다. 자세한 내용은 JavaScript/TypeScript 앱 빌드에서 개발자 가이드 문서의 전체 목록을 참조하세요.