TypeScript를 사용하여 Blob 다운로드
이 문서에서는 JavaScript용 Azure Storage 클라이언트 라이브러리를 사용하여 Blob을 다운로드하는 방법을 보여 줍니다. 로컬 파일 경로, 스트림 또는 텍스트 문자열을 비롯한 다양한 대상에 Blob 데이터를 다운로드할 수 있습니다.
필수 조건
- 이 문서의 예제에서는 JavaScript용 Azure Blob Storage 클라이언트 라이브러리로 작업하도록 프로젝트가 이미 설정되어 있다고 가정합니다. 패키지 설치, 모듈 가져오기, 데이터 리소스 작업을 위한 권한 있는 클라이언트 개체 만들기 등 프로젝트를 설정하는 방법에 대한 자세한 내용은 Azure Blob Storage 및 TypeScript 시작을 참조하세요.
- 권한 부여 메커니즘에는 다운로드 작업을 수행할 수 있는 권한이 있어야 합니다. 자세한 내용은 다음 REST API 작업에 대한 권한 부여 지침을 참조하세요.
Blob 다운로드
다음 메서드를 사용하여 BLOB을 다운로드할 수 있습니다.
- BlobClient.download
- BlobClient.downloadToBuffer(Node.js 런타임에서만 사용 가능)
- BlobClient.downloadToFile(Node.js 런타임에서만 사용 가능)
파일 경로에 다운로드
다음 예제에서는 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 작업을 사용합니다.
- Blob 가져오기(REST API)
코드 샘플
이 문서의 코드 샘플 보기(GitHub):