728x90
반응형
Axios로 파일을 보낼때 파일이 req.files에 나오지 않는 현상이 나왔다.
원래라면 이렇게 req.files를 할 때 나와야하는데 아예 빈 값이 나와 당황스러웠다.
const formData = new FormData();
formData.append("script", data);
axios.post(`http://${process.env.LOGICKIT_URL}/module/add`, formData, {
headers: {
'Content-Type': 'multipart/form-data'
}
})
.catch((error) => {
console.log(`fail 😱`, error.message)
})
작성한 코드를 한번 살펴보면 이상한 점이 하나도 보이지 않는다.
원인을 찾기 위해 여러가지로 코드를 수정해본 결과..!
formData.append("script", data, { filename: 'at.ts'});
바로 filename을 써주지 않았기 때문이다.
JS 공식문서를 보면 FormData.append()에 매개변수 중 filename이라는 옵션이 있다.
흠.. 읽어보니 파일 이름이라는 것을 알 수 있지만 아직까지도 무슨 역할을 해주는지 모르겠다.
하지만 이걸 req.files로 받았을 때 보면 정확하게 알 수 있다.
바로 filename이 multer의 originalname이라는 것을 알 수 있다 ❗️
즉, originalname을 설정해주지 않아 파일이 req.files에서 찾아볼 수 없었던 것이다.
그러니 앞으론 filename을 이용해서 파일 이름을 만들어주도록 하자.
728x90
반응형
'All Side > Runtime > NodeJS' 카테고리의 다른 글
[NodeJS] 테스트 코드 작성하기 (1) 알아버린 참맛 + 필요성 (0) | 2022.08.24 |
---|---|
[NodeJS] 검색기능 만들기 (1) MongoDB Query (0) | 2022.08.19 |
[npm] NodeJS에서 환경변수 사용하기 - dotenv (0) | 2022.08.10 |
npm 명령어 모음 (0) | 2022.05.30 |
[NodeJS] API 문서 툴 Swagger 사용해서 API 문서 자동화 (+ swagger-autogen) (0) | 2022.05.26 |
댓글