[NestJS] s3 image upload

Younghwan Cha·2023년 9월 12일
0

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

profile
개발 기록

0개의 댓글