Node.js/Express
multer - 파일 받기
jm_p_op
2024. 5. 14. 14:01
참고자료-https://github.com/expressjs/multer/blob/master/doc/README-ko.md
설정
- storage - 저장path설정
- filename - 파일 이름
- 시간을 넣어 독립적으로 제작
- destination - 폴더명
- DB별 나눠주는것이 좋음
- filename - 파일 이름
- limit - 파일 종류, 사이즈 등
사용
- .single( 'input-key' )
- req.file에 저장
- .array( 'input-key' )
- .fields( 'input-key' )
- req.files에 저장
- req.file.path가 데이터 저장된 path임으로 중요
에러 핸들링
- multerFunction(req,res(err)=>{ fun1})
- 에러 발생시 err이 존재
- 에러 없어도 fun1실행
- multerFunction을 await시킨후 req.files읽어도 데이터는 사라진다.
- fun1에서 따로 저장을 하거나, fun1에서 실행시켜야된다.
const multer = require('multer');
const path = require('path');
const upload = multer({
storage: multer.diskStorage({
filename(req, file, done) {
done(null, Date.now()+file.originalname);
},
destination(req, file, done) {
done(null, path.join(__dirname, "../uploads"));
},
}),
limits: { fileSize:
// 1
5 * 1024 * 1024
} // 5메가로 용량 제한
});
const uploadArrayImage = upload.array('image')
/
router.post('/upload',
uploadArrayImage,
function (req, res, next) {
console.log(req.files)
})
/error
router.post('/upload',
async (req,res,next)=>{
await uploadArrayImage(req, res,(err)=>
{if (err){
return res.send(400)
}
console.log(req.files)
return res.send(req.files.path)
}
)
console.log(req.files)
next()
},
(req,res)=>{()=>console.log(req.files)}
);