multer
- 파일 업로드를 위해 사용되는
multipart/form-data
를 다루기 위한 node.js의 미들웨어
- multipart가 아닌 폼에서는 동작하지 않음
$ npm install --save multer
- NestJS에서 제공하는 Multer 타이핑 패키지 다운
$ npm i -D @types/multer
example
@Post('upload')
@UserInterceptors(FileInterceptor('file'))
@ApiConsumes('multipart/form-data')
@ApiBody({
schema: {
type: 'object',
properties: {
file: {
type:'string',
format: 'binary'
},
},
},
})
uploadFile(@UploadFile() file: Express.Multer.File) {
}
FileInterceptor
- 인수
- fieldName: 파일이 있는 HTML 양식에서 필드 이름을 제공하는 문자열
- options: MulterOptions
타입의 선택적 객체
@UploadFile()
데코레이터를 사용해 request
에서 파일을 추출함
- array of file:
FilesInterceptor()
,@UploadedFiles()
- multiple files:
FileFieldsInterceptor()
,@UploadedFiles()
@ApiConsumes()
- swagger에서 특정 메소드에 대한 파일 업로드 기능 활성화
@ApiConsumes('multipart/form-data')
@ApiBody()
파일 업로드를 위한 데코레이터를 하나로 합치기
export function ApiFile(fieldName: string = 'file') {
return applyDecorators(
UseInterceptors(FileInterceptor(fieldName)),
ApiConsumes('multipart/form-data'),
ApiBody({
schema: {
type: 'object',
properties: {
[fieldName]: {
type:'string',
format: 'binary'
},
},
},
}),
);
}
@Post('upload')
@ApiFile('file')
uploadFile(@UploadFile() file: Express.Multer.File) {
}