일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 정렬
- 게임
- game
- Express
- Nest.js
- TypeScript
- Sequelize
- OCR
- Dinosaur
- nodejs
- react
- mongoose
- 자료구조
- class
- Queue
- AWS
- cookie
- 공룡게임
- MySQL
- nestjs
- flask
- dfs
- GIT
- JavaScript
- Bull
- typeORM
- MongoDB
- Python
- jest
- Today
- Total
포시코딩
2월21일 - nestjs-form-data 본문
개요
React에서 Nest.js 서버로 axios를 통해 글쓰기 요청을 보내는 과정에서
이미지 파일도 같이 보낼걸 생각해
원래
axios
.post('http://localhost:8080/boards', {
title,
content,
})
이렇게 보냈다면
formData를 써서
const formData = new FormData();
formData.append('title', title);
formData.append('content', content);
formData.append('file', file);
axios
.post('http://localhost:8080/boards', formData)
이렇게 보내게끔 수정했는데
이상하게 Nest.js 서버의 controller에서 받는 body값이 계속 빈 {}로 전달되고 있었다.
@Post()
createBoard(@Body() boardData) {
console.log(boardData); // {}
return;
}
Nest.js에서 formData를 못받는 이유가 따로 있을거라 생각해
방법이 없나 찾아보니
패키지를 통해 해결할 방법이 있었다.
해결 방법
https://www.npmjs.com/package/nestjs-form-data
nestjs-form-data
NestJS middleware for handling multipart/form-data, which is primarily used for uploading files. Latest version: 1.8.7, last published: 2 months ago. Start using nestjs-form-data in your project by running `npm i nestjs-form-data`. There is 1 other project
www.npmjs.com
nestjs-form-data 패키지를 사용하면 간단하게 해결할 수 있다.
module에서 NestjsFormDataModule을 import에 넣고
controller에서 데코레이터를 통해 formData를 받게끔 선언하면 된다.
module
@Module({
imports: [
NestjsFormDataModule,
],
controllers: [BoardsController],
providers: [BoardsService]
})
export class BoardsModule {}
controller
@Post()
@FormDataRequest()
createBoard(@Body() boardData) {
console.log(boardData);
return;
}
이렇게 함으로서 formData를 통해 이미지 파일과 다른 데이터까지 같이 받을 수 있다.
+ 추가
nestjs-form-data 사용 시 dto를 활용하지 못한다는 문제로 인해
nestjs-form-data를 사용하지 않고 multer와 함께 dto 상의 설정 변경을 통해
데이터를 받는 방법을 알아내 아래 링크에 정리했다.
[Nest.js] FormData 전달받기 with multer
개요 string, number type의 데이터와 이미지 파일이 같이 담긴 FormData에 대해 Nest.js 상에서 어떻게 해야 multer를 통해 이미지 파일을 받고 나머지 데이터들에 대해 DTO를 적용해 type을 가려받을 수 있는
4sii.tistory.com
'TIL' 카테고리의 다른 글
2월23일 - debounce, throttle (0) | 2023.02.23 |
---|---|
2월22일 - Authentication, Authorization 차이 (0) | 2023.02.22 |
2월20일 - Linked List 구현 심화 (Python) (0) | 2023.02.20 |
2월19일 - Queue, Stack, Linked List 구현하기 (Python) (0) | 2023.02.20 |
2월18일 - Naver Maps API (1) | 2023.02.19 |