NestJS 기초 (14) 이미지 파일 업로드하기

2022. 11. 7. 16:49·개발/NestJS

NestJS에서는 multer 미들웨어 패키지를 사용하여 이미지 파일을 업로드할 수 있습니다. multer는 multipart/form-data 형식을 통해 HTTP POST 요청으로 업로드 되는 파일을 처리할 수 있게 도와줍니다.

multer 설치 및 기본 설정

다음 명령어를 통해 multer를 설치할 수 있습니다.

$ npm i -D @types/multer

multer를 설치했다면 컨트롤러 파일에 다음과 같이 이미지 업로드를 처리할 코드를 작성합니다. 이미지 업로드 직전에 인증 섹션에서 만들었던 가드를 추가해주도록 하겠습니다. 이렇게 하면 인증 토큰을 보유한 사용자만 이미지 업로드를 할 수 있습니다.

//users.contoller.ts

@ApiOperation( {summary: '이미지 업로드'})
@UseInterceptors(FilesInterceptor('file'))
@UseGuards(AuthGuard('jwt')) //인증된 사용자만(토큰 보유) 이미지 업로드
@Post('upload')
uploadImg(@UploadedFiles() files: Array<Express.Multer.File>) {
    console.log(files);
    return files;
}

다음으로 모듈에 추가를 마치면 기본 설정이 모두 끝납니다.

//users.module.ts

@Module({
  imports: [
      MulterModule.register({
          dest: './upload',
    }),
  ]
})

포스트맨에서 이미지 업로드 테스트

이제 포스트맨을 통해 이미지 파일 업로드를 테스트해보겠습니다.

  1. 헤더에 JWT를 Bearer Token 형식으로 담습니다.
  2. POST 요청에서 form-data 타입을 선택합니다.
  3. KEY에는 FilesInterceptor에 지정한 file을 입력하고 형식을 Text에서 File로 바꿔줍니다. VALUE를 클릭하면 이미지를 업로드할 수 있는 창이 표시됩니다.
  4. 전송 버튼을 누르면 이미지가 업로드됩니다.
  5. 프로젝트에 upload 디렉토리가 새롭게 생성되며, 해당 파일이 업로드된 것을 확인할 수 있습니다.

 

참고 자료

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

'개발 > NestJS' 카테고리의 다른 글

NestJS 기초 (15) MVC 디자인 패턴 구현하기  (0) 2022.11.19
NestJS 기초 (13) JWT를 사용한 인증 인가 처리와 데코레이터 구현  (0) 2022.11.01
NestJS 기초 (12) 가드를 사용한 인증과 인가  (0) 2022.10.17
'개발/NestJS' 카테고리의 다른 글
  • NestJS 기초 (15) MVC 디자인 패턴 구현하기
  • NestJS 기초 (13) JWT를 사용한 인증 인가 처리와 데코레이터 구현
  • NestJS 기초 (12) 가드를 사용한 인증과 인가
  • NestJS 기초 (11) API 문서 작성하기 (스웨거)
휘Hwi
휘Hwi
여행, 사진, 개발, 책 이야기를 기록하는 여행자 휘의 블로그 𓂍
Klook.com
  • 휘Hwi
    휘: 끝나지 않은 이야기
    휘Hwi
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 기록
        • 일상 에세이
        • 인사이트
        • 투자와 재테크
        • 코인 이야기
        • 아카이빙
        • 집무실 레터
        • 사랑에 대하여
        • 번역 이야기(完)
        • 프리랜서 일지(完)
      • 여행
        • 🌎 세계 여행기 S1 (完)
        • 🌊 삼삼한 여행기 (完)
        • 🚶 온더로드
        • 🇯🇵 일본
        • 🏝️ 발리
        • 🇻🇳 베트남
        • 🇱🇰 스리랑카
        • 🇮🇳 인도
        • 🇹🇭 태국
        • 🇸🇬 싱가포르
        • 🇦🇺 호주
        • 🇭🇰 홍콩
        • 🇰🇷 한국
        • 🍚 여행자의 한 끼
        • ℹ️ 여행 정보
      • 사진
        • 사진가
        • 사진 이론과 생각
        • 사진 관련 정보
      • 영상
        • 파이널컷 모션 공부
        • 고프로 GoPro
        • 영상 관련 정보
      • 책
        • 책 읽고 쓰기
      • 개발
        • 티스토리
        • Internet
        • HTML
        • CSS
        • JavaScript
        • Typescript
        • React
        • Node.js
        • Express
        • NestJS
        • Python
        • Django
        • MySQL
        • MongoDB
        • AWS
        • Deployment
        • Terminal
        • Git
        • Glossaries
        • Articles
        • Projects
        • TIL;
      • 미분류
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
휘Hwi
NestJS 기초 (14) 이미지 파일 업로드하기
상단으로

티스토리툴바