[NODE] 파일업로드 처리하기
2022. 2. 9. 17:09ㆍNodeJs
반응형
const express = require("express");
const multer = require("multer");
const router = express.Router()
// multer 미들웨어 사용 : 미들웨어 사용 순서 중요 body-parser -> multer -> router
// 파일 제한 : 10개, 1G
let storage = multer.diskStorage({
"destination" : function(req, file, callback){
callback(null, 'uploads');
},
"filename" : function(req, file, callback){
callback(null, file.originalname + Date.now());
},
})
let upload = multer({
"storage": storage,
"limits" : {
files : 10,
fileSize : 1024 * 1024 * 1024
}
});
router.route('/upload').post(upload.array('photo',1), (req, res) => {
console.log('process/upload 호출됨.');
try{
let files = req.files;
console.dir('===== 업로드된 첫번째 파일 정보 =====');
console.dir(req.files[0]);
console.dir('=====');
// 현재 파일 정보를 저장할 변수 선언
let originalname = '',
filename = '',
size = 0;
let index = 0
if( Array.isArray(files)){
// 배열에 들어가 있는 경우(설정에서 1개의 파일도 배열에 넣게 했음)
console.log('배열에 들어있는 파일 갯수 : %d', files.length);
for( ; index < files.length; index++){
originalname = files[index].originalname;
filename = files[index].filename;
mimetype = files[index].mimetype;
size = files[index].size;
}
}else{
// 배열에 들어가 있지 않은 경우(현재 설정에서는 해당 없음)
console.log('파일 갯수 : 1 ');
originalname = files[index].originalname;
filename = files[index].name;
mimetype = files[index].mimetype;
size = files[index].size;
}
console.log('현재 파일 정보 : ' + originalname + ', ' + filename + ', ' + mimetype + ', ' + size);
// 클라이언트에 응답 전송
res.writeHead('200', {"content-Type":"text/html;charset=utf8"});
res.write('<h3>파일 업로드 성공</h3>');
res.write('<hr/>');
res.write('<p>원본 파일 이름 : ' + originalname + ' -> 저장 파일명 : ' + filename + '</p>');
res.write('<p>MIME TYPE : ' + mimetype + '</p>');
res.write('<p>파일 크기 : ' + size + '</p>');
res.end();
}catch(e){
console.dir(e.stack);
}
})
반응형
'NodeJs' 카테고리의 다른 글
Node Js로 자바에서 생성한 JWT 검증처리하기 (0) | 2023.05.22 |
---|---|
[NODE] express 프로젝트 생성 (0) | 2022.08.02 |
[NODE] 세션 삭제, 로그아웃 처리하기 (0) | 2022.01.26 |
[NODE] 세션 사용하기 , 로그인 처리하기 (1) | 2022.01.26 |
[NODE] 쿠키 사용하기 (1) | 2022.01.26 |