Azure Blob Storage에 파일 업로드 하기 Node(Express) 사용
2020. 10. 29. 15:39ㆍAzure
Azure Blob Storage에 파일을 업로드 한다.
순서 : 프론트엔드에서 데이터 값과 파일을 업로드 => 백엔드에서 파일을 Azure Blob Storage으로 컨테이너명, blob데이터명을 정해서 업로드
먼저 라이브러리들을 설치한다.
npm i multer-azure-blob-storage multer
먼저 ejs로 프론트 엔드 코드를 작성한다.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<form action="/documents" method="POST" enctype="multipart/form-data">
<label>컨텐츠 이름:</label>
<input type="text" class="form-control" name="container">
<label>파일 이름:</label>
<input type="text" class="form-control" name="name">
<label>bookdata:</label>
<input type="file" class="form-control" name="blobData">
<button type="submit" class="btn">업로드</button>
</form>
</body>
</html>
이렇게 작성하면되는데 주의할점은 enctype="multipart/form-data" 부분을 꼭 써주어야 한다.
azure 포탈에서 본인의 Storage accounts에서 Settings에 있는 Access keys에 들어가 본인의 key값과, Connection String Storage account name, 값을 복사해 가져온다.
const multer = require('multer')
const MulterAzureStorage = require('multer-blob-storage').MulterAzureStorage
const connection = 'DefaultEndpointsProtocol=https;AccountName=mystorageaccountname;AccountKey=wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY;EndpointSuffix=core.windows.net'
const accessKey = 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY'
const accountName = 'mystorageaccountname'
//blob파일명, 경로 설정
const resolveBlobName = (req, file) => {
//본인이 사용하고 싶은 경로 밑 blob파일명을 설정해주는 로직을 만들어 주면된다.
//경로 설정 /test/파일이름 => 컨테이너 명/test/파일명 으로 생성
const blobName = 'test'/req.body.name
return blobName;
};
//컨테이너명도 설정. 컨테이너에서는 경로설정불가
const container = (req, file) => {
const containerName = req.body.container
return containerName
}
//메타 데이터도 설정 할 수 있다.
//const resolveMetadata = (req, file) => {
// return new Promise((resolve, reject) => {
// const metadata = yourCustomLogic(req, file);
// resolve(metadata);
// });
//};
const azureStorage = new MulterAzureStorage({
connectionString : connectionString
accessKey : accessKey
accountName : accountName
//컨테이너 명
containerName: container,
//blob파일 이름 밑 경로 설정
blobName: resolveBlobName,
//메타데이터
//metadata: resolveMetadata,
//'blob' or 'container' or 'private' 으로 업로드 파일 등급을 변경 할수있다.
containerAccessLevel: 'blob',
urlExpirationTime: 60
});
const upload = multer({
storage: azureStorage
});
app.post('/documents', upload.any(), (req, res, next) => {
console.log(req.files)
res.status(200).json(req.files)
});
이렇게 백 코드를 완성 시켰다.
라이브러리를 사용하면 간단하게 업로드 할 수 있다.
참고 : www.npmjs.com/package/multer-azure-blob-storage
728x90
반응형
'Azure' 카테고리의 다른 글
우당탕 Azure Pipeline CI CD 설정 하기 (3) (0) | 2020.11.17 |
---|---|
우당탕 Azure Pipeline CI CD 설정 하기 (2) (0) | 2020.11.17 |
우당탕 Azure Pipeline CI CD 설정 하기 (1) (0) | 2020.11.17 |
Vue에서 Azure blob storage에 파일 업로드 하기 Express 사용 (0) | 2020.10.29 |
Azure CosmosDB연결시 Collection 명칭 (0) | 2020.08.04 |