Nest.js 에서는 기본적으로 express middleware package 인 multer 에 기반한 내장 모듈을 제공한다. Multer 는 HTTP POST 요청을 통해서 이미지를 업로드 할때 주로 쓰이는 multipart/form-data
포멧을 사용한다.
하단과 같이
@Post('upload')
@UseInterceptors(FileInterceptor('file'))
uploadFile(@UploadedFile() file: Express.Multer.File) {
console.log(file);
}
swagger 생성시에 @ApiConsumes
decorator 를 통해서 받는 타입을 표기 할 수 있다.
FileFieldsInterceptor 를 통해서
@ApiConsumes('multipart/form-data')
@UseInterceptors(
FileFieldsInterceptor([{ name: 'images', maxCount: 10 }], s3UploadOptions),
)
uploadFile(@UploadedFiles() file: Express.Multer.File[]) {
console.log(file);
}
import {
GetObjectCommand,
PutObjectCommand,
S3Client,
} from '@aws-sdk/client-s3';
const s3 = new S3Client({
region: 'ap-northeast-2',
});
// upload to s3
const command = new PutObjectCommand({
Bucket
Key
Body
ContentType
})
// downlaod from s3
const command = new GetObjectCommand({
Bucket
Key
})
[nest.js file upload] https://docs.nestjs.com/techniques/file-upload