[NestJS] File upload (multer)

Haeseo Lee·2023년 4월 7일
0

NestJS

목록 보기
3/4
post-thumbnail

https://docs.nestjs.com/techniques/file-upload

NestJS는 파일 업로드를 위해 Express의 Multer 를 내장 모듈로써 제공한다.

Multer

Multer는 Express 패키지로, HTTP POST 요청으로 들어온 multipart/form-data형식의 데이터를 다룬다.

설치

Type 설정을 위해 아래 패키지를 설치해준다.

$ npm i -D @types/multer

기본 사용

1) interceptor

  • file 데이터를 받고자 하는 컨트롤러에 interceptor를 적용해준다
  • @nestjs/platfrom-express에서 이미 만들어진 FilesInterceptor를 사용
fieldName form-data의 key값
maxCount 처리할 파일 최대 개수
localOptions 기타 옵션
export declare function FilesInterceptor(
	fieldName: string, 
	maxCount?: number, 
	localOptions?: MulterOption
): Type<NestInterceptor>;
  • 프론트 쪽에서 보낸 form-data에서 파일 데이터의 key값을 인자로 넣어줌
@Post('upload')
@UseInterceptors(FileInterceptor('file'))
// @UseInterceptors(FilesInterceptor('file', 10)) // 여러개의 파일일 경우

2) @UploadedFiles

  • 내장 데코레이터 @UploadedFiles로 form-data에서 파일 객체 추출
uploadFile(@UploadedFile() file: Express.Multer.File) {
  ...
}
  • 여러개의 파일이면
uploadFile(@UploadedFile() files: Express.Multer.File[]) {
  ...
}
profile
잡생각 많은 인간

0개의 댓글