[Node.JS] 파일 업로드를 위한 'Multer'

박두팔이·2024년 1월 30일
0

Node.JS

목록 보기
2/20

Multer공식문서

Multer란

body객체와 한 개의 file혹은 여러개의 files객체를 request객체에 추가할 수 있도록 한 미들웨어

1. Multer 설치

$ npm install --save multer

2. 사용법

Multer는 body 객체와 한 개의 file, 여러개의 files객체를 request객체에 추가한다.

  • body객체는 폼 텍스트 필드의 값을 포함하고, 한 개 혹은 여러개의 파일 객체는 폼을 통해 업로드된 파일들을 포함하고 있다.

Multer 기본 사용 예제

const multer  = require('multer')


3. API

파일 정보

KeyDescriptionNote
fieldname폼에 정의된 필드 명
originalname사용자가 업로드한 파일 명
encoding파일의 엔코딩 타입
mimetype파일의 Mime 타입
size파일의 바이트(byte) 사이즈
destination파일이 저장된 폴더DiskStorage
filenamedestination에 저장된 파일 명DiskStorage
path업로드된 파일의 전체 경로DiskStorage
buffer전체 파일의 BufferMemoryStorage

4. multer(opts)

Multer로 전달 가능한 옵션은 다음과 같다.

  • dest, storage : 파일이 저장될 위치
  • fileFilter : 어떤 파일을 허용할지 제어하는 함수
  • limits : 업로드 된 데이터의 한도
  • preservePath : 파일의 base name대신 보존할 파일의 전체 경로

dest옵션 설정 방법

주로 web app에서는 dest옵션 정보만 필요함

const upload = multer({ dest: 'uploads/' })

5. error 핸들링 예시

에러가 발생할 때, multer는 에러를 express에 위임한다. 에러를 핸들링하고 싶다면 직접 미들웨어 함수를 호출하는 방법이 있다.

const upload = multer().single('avatar')

app.post('/profile', function (req, res) {
  upload(req, res, function (err) {
    if (err) {
      // 업로드할때 오류가 발생함
      return
    }

    // 정상적으로 완료됨
  })
})
profile
기억을 위한 기록 :>

0개의 댓글