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