Microsoft Azure Blob Storage 파일 다운로드

Home > Microsoft Azure Blob Storage > 예제 02

설명

Microsoft Azure Blob Storage의 특정 컨테이너에 존재하는 파일을 다운로드하는 예제이다. DEXTUploadX5는 공유액세스(SAS, Shared Access Signature) 토큰을 얻어 컨테이너로부터 파일을 다운로드하는 기능을 제공한다. 공유액세스 토큰을 얻기 위해서는 '계정, 컨테이너, 액세스키' 정보를 미리 알고 있어야 하는데, '액세스키'는 외부에 노출이 되면 안되는 민감한 정보이므로 반드시 백엔드에서 다루어야 한다.

다음 코드는 컨테이너로부터 파일을 다운로드하기 위한 DEXTUploadX5 설정 부분을 보여준다.

// AZRBS 방식으로 설정한다.
dx.setDownloadMode("AZRBS");
dx.setAZRBSDownloadConfig({
    accountName: "photomanager",
    containerName: "photos",
	// 파일 다운로드 단계마다 필요한 공유액세스 토큰을 생성하는 핸들러 주소
    sasDownloadURL: dx5.canonicalize("../service/get-download-sastoken.do")
});

sasDownloadURL은 파일 다운로드할 때 필요한 공유액세스 토큰을 생성하여 반환하는 역할을 담당한다. 백엔드에서 공유액세스 토큰을 만들기 위해서는 Microsoft에서 제공하는 Azure SDK를 사용해야 하는데, 메이븐 환경인 경우 다음의 의존성을 사용하여 필요한 SDK를 얻을 수 있다.

<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-storage-blob</artifactId>
    <version>12.31.0</version>
</dependency>

Azure SDK를 사용하여 공유액세스 토큰을 생성하는 세부 내용은 AzureSasTokenGenerator, AZRBSController 클래스들을 참고하도록 한다.

컨테이너에 보관된 객체(파일)는 다음과 같은 주소 체계를 가지고 접근할 수 있다. 여기서 'key'는 Blob 이름과 같다.

https://{계정이름}.blob.core.windows.net/{컨테이너}/{key}

위의 주소를 가상 파일의 url로 설정하는 것을 권장한다.

dx.addVirtualFile({ name: "서강대교_509147.jpg", size: 509147, url: "https://photomanager.blob.core.windows.net/photos/%EC%84%9C%EA%B0%9...%EA%B5%90_509147.jpg" });
dx.addVirtualFile({ name: "우도해변_239826.jpg", size: 239826, url: "https://photomanager.blob.core.windows.net/photos/%EC%9A%B0%EB%8F%8...%EB%B3%80_239826.jpg" });
dx.addVirtualFile({ name: "코스모스 (빈공간) 195779.jpg", size: 195779, url: "https://photomanager.blob.core.windows.net/photos/%EC%BD%94%EC%8A%A4...%EA%B0%84)%20195779.jpg" });

예제

단일 파일 다운로드

단일 파일 다운로드를 할 때, 대상은 동일 출처가 아니므로 브라우저는 대상을 다운로드하지 못하고 직접 열 수도 있다.

다중 파일 다운로드