Share via


TypeScript를 사용하여 Blob 다운로드

이 문서에서는 JavaScript용 Azure Storage 클라이언트 라이브러리를 사용하여 Blob을 다운로드하는 방법을 보여 줍니다. 로컬 파일 경로, 스트림 또는 텍스트 문자열을 비롯한 다양한 대상에 Blob 데이터를 다운로드할 수 있습니다.

필수 조건

  • 이 문서의 예제에서는 JavaScript용 Azure Blob Storage 클라이언트 라이브러리로 작업하도록 프로젝트가 이미 설정되어 있다고 가정합니다. 패키지 설치, 모듈 가져오기, 데이터 리소스 작업을 위한 권한 있는 클라이언트 개체 만들기 등 프로젝트를 설정하는 방법에 대한 자세한 내용은 Azure Blob Storage 및 TypeScript 시작을 참조하세요.
  • 권한 부여 메커니즘에는 다운로드 작업을 수행할 수 있는 권한이 있어야 합니다. 자세한 내용은 다음 REST API 작업에 대한 권한 부여 지침을 참조하세요.

Blob 다운로드

다음 메서드를 사용하여 BLOB을 다운로드할 수 있습니다.

파일 경로에 다운로드

다음 예제에서는 BlobClient.downloadToFile 메서드와 함께 파일 경로를 사용하여 Blob을 다운로드합니다. 이 메서드는 Node.js 런타임에서만 사용할 수 있습니다.

async function downloadBlobToFile(
  containerClient: ContainerClient,
  blobName,
  fileNameWithPath
): Promise<void> {
  const blobClient = await containerClient.getBlobClient(blobName);

  const downloadResult = await blobClient.downloadToFile(fileNameWithPath);
  if (!downloadResult.errorCode) {
    console.log(
      `download of ${blobName} success ${downloadResult.blobCommittedBlockCount}`
    );
  }
}

스트림으로 다운로드

다음 예에서는 Node.js 쓰기 가능한 스트림 개체를 만든 다음 BlobClient.download 메서드를 사용하여 해당 스트림으로 파이핑하여 Blob을 다운로드합니다.

async function downloadBlobAsStream(
  containerClient: ContainerClient,
  blobName,
  writableStream
) {
  const blobClient: BlobClient = await containerClient.getBlobClient(blobName);

  const downloadResponse = await blobClient.download();

  if (!downloadResponse.errorCode && downloadResponse?.readableStreamBody) {
    downloadResponse.readableStreamBody.pipe(writableStream);
    console.log(`download of ${blobName} succeeded`);
  }
}

문자열에 다운로드

다음 Node.js 예제에서는 BlobClient.download 메서드를 사용하여 Blob을 문자열로 다운로드합니다. Node.js에서 Blob 데이터는 readableStreamBody로 반환합니다.

async function downloadBlobToString(
  containerClient: ContainerClient,
  blobName
): Promise<void> {
  const blobClient: BlobClient = await containerClient.getBlobClient(blobName);

  const downloadResponse: BlobDownloadResponseParsed =
    await blobClient.download();

  if (!downloadResponse.errorCode && downloadResponse.readableStreamBody) {
    const downloaded = await streamToBuffer(
      downloadResponse.readableStreamBody
    );
    if (downloaded) {
      console.log('Downloaded blob content:', downloaded.toString());
    }
  }
}
async function streamToBuffer(readableStream) {
  return new Promise((resolve, reject) => {
    const chunks: Buffer[] = [];

    readableStream.on('data', (data) => {
      const content: Buffer = data instanceof Buffer ? data : Buffer.from(data);
      chunks.push(content);
    });
    readableStream.on('end', () => {
      resolve(Buffer.concat(chunks));
    });
    readableStream.on('error', reject);
  });
}

브라우저에서 JavaScript를 사용하는 경우 Blob 데이터는 promise blobBody로 반환됩니다. 자세한 내용은 BlobClient.download에서 브라우저 사용 예제를 참조하세요.

리소스

JavaScript 및 TypeScript용 Azure Blob Storage 클라이언트 라이브러리를 사용하여 Blob을 다운로드하는 방법에 대해 자세히 알아보려면 다음 리소스를 참조하세요.

REST API 작업

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

코드 샘플

이 문서의 코드 샘플 보기(GitHub):

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