body
객체와 한 개의 file혹은 여러개의 files객체를 request객체에 추가할 수 있도록 한 미들웨어
$ npm install --save multer
Multer는 body
객체와 한 개의 file
, 여러개의 files
객체를 request객체에 추가한다.
const multer = require('multer')
Key | Description | Note |
---|---|---|
fieldname | 폼에 정의된 필드 명 | |
originalname | 사용자가 업로드한 파일 명 | |
encoding | 파일의 엔코딩 타입 | |
mimetype | 파일의 Mime 타입 | |
size | 파일의 바이트(byte) 사이즈 | |
destination | 파일이 저장된 폴더 | DiskStorage |
filename | destination에 저장된 파일 명 | DiskStorage |
path | 업로드된 파일의 전체 경로 | DiskStorage |
buffer | 전체 파일의 Buffer | MemoryStorage |
Multer로 전달 가능한 옵션은 다음과 같다.
dest
, storage
: 파일이 저장될 위치fileFilter
: 어떤 파일을 허용할지 제어하는 함수limits
: 업로드 된 데이터의 한도preservePath
: 파일의 base name대신 보존할 파일의 전체 경로주로 web app에서는 dest옵션 정보만 필요함
const upload = multer({ dest: 'uploads/' })
에러가 발생할 때, multer는 에러를 express에 위임한다. 에러를 핸들링하고 싶다면 직접 미들웨어 함수를 호출하는 방법이 있다.
const upload = multer().single('avatar')
app.post('/profile', function (req, res) {
upload(req, res, function (err) {
if (err) {
// 업로드할때 오류가 발생함
return
}
// 정상적으로 완료됨
})
})