Microsoft Azure Blob Storage 파일 업로드

Home > Microsoft Azure Blob Storage > 예제 01

설명

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

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

// AZRBS 방식으로 설정한다.			
dx.setUploadMode("AZRBS");
dx.setAZRBSUploadConfig({
    accountName: "photomanager",	
	containerName: "photos",
    // 커밋되지 않은 블록 목록을 얻기 위한 공유액세스 토큰을 생성하는 핸들러 주소
    sasListURL: dx5.canonicalize("../service/get-list-sastoken.do"),
    // 파일 업로드 단계마다 필요한 공유액세스 토큰을 생성하는 핸들러 주소
    sasUploadURL: dx5.canonicalize("../service/get-upload-sastoken.do")
});

sasListURL과 sasUploadURL은 파일 업로드를 하는 각 단계마다 필요로 하는 공유액세스 토큰을 생성하여 반환하는 역할을 담당한다. 백엔드에서 공유액세스 토큰을 만들기 위해서는 Microsoft에서 제공하는 Azure SDK를 사용해야 하는데, 메이븐 환경인 경우 다음의 의존성을 사용하여 필요한 SDK를 얻을 수 있다. 샘플 프로젝트에서는 WEB-INF/lib 폴더에 필요한 JAR 파일들을 넣어두었다.

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

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

Azure Blob Storage의 컨테이너도 업로드를 위한 설정을 해주어야 한다. Azure 홈에서 스토리지 계정을 선택하면 리소스 공유(CORS) 설정 메뉴를 찾을 수 있다. Blob 서비스 탭에서 GET, HEAD, POST, OPTIONS, PUT 메소드를 허용하고, 요청 헤더에는 content-type, x-requested-with, x-ms-*를 설정하도록 한다.

예제

업로드 결과