Node.js
Multer
신입주니어개발자
2022. 1. 16. 15:47
- multer란 파일 업로드를 위해 사용되는 multipart/form-data를 다루기 위한 node.js 의 미들웨어이다.
- Multer는 multipart (multipart/form-data)가 아닌 폼에서는 동작하지 않는다.
- Multer는 DB가 아닌 서버측 저장소다. 즉 local 폴더나 aws같은 클라우스 서비스 폴더에 저장된다
Installation
$ npm install --save multer
const multer = require('multer'); //비디오 업로드시
const storage = multer.diskStorage({
destination: (req, file, cb) => { //저장소
cb(null, 'uploads')
},
filename: (req, file, cb) => { //파일이름
cb(null, `${Date.now()}_${file.originalname}`)
},
fileFilter: (req, file, cb) => { //파일형식 거르기
const ext = path.extname(file.originalname)
if (ext !== '.mp4') {
return cb(res.status(400).end('only jpg, png, mp4 is allowed'), false); //에러,성공여부false
}
cb(null, true) //error 값 x , 성공여부true
}
})
var upload = multer({ storage: storage }).single("file")
//db저장부분이 아닌 client에게 파일의 path와 filename을 알려주기위한 api (uploads폴더안에는 저장됨)
router.post("/uploadfiles", (req, res) => {
upload(req, res, err => {
if (err) {
return res.json({ success: false, err })
}
return res.json({ success: true, filePath: res.req.file.path, fileName: res.req.file.filename })
})
});
참고:multer/README-ko.md at master · expressjs/multer (github.com)
GitHub - expressjs/multer: Node.js middleware for handling `multipart/form-data`.
Node.js middleware for handling `multipart/form-data`. - GitHub - expressjs/multer: Node.js middleware for handling `multipart/form-data`.
github.com