🤍 전 강의 25% 할인 중 🤍

2024년 상반기를 돌아보고 하반기에도 함께 성장해요!
인프런이 준비한 25% 할인 받으러 가기 >>

  • 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

formdata.append 질문

21.08.03 17:33 작성 조회수 273

0

formdata.append 로 파일 두개를 한번에 서버로 전달은 불가능한가요?

fileds로 서버에서 받으려는데 안받아지네요 ㅜ

router.post(
'/upload',
uploadData.fields(['data1', 'data2']),
(req, res) => {
console.log(req.body);
console.log(req.files);
res.send('ok');
}
);

uploadData는 aws s3로 파일 업로드하는거 따로 분리한 미들웨어 입니다.

MulterError: Unexpected field 이런 애러가 뜨네요.

답변 2

·

답변을 작성해보세요.

1

axios.post(주소, formData) 하셨나요?

axiost.post(주소, { data: formData }) 하신 건 아니죠?

그리고 fields도 정확한 문법은 다음과 같은 것만 되는 것 같습니다. 공식문서에 나와있는게 아니면 함부로 바꾸시면 안 돼요.

[
  { name: 'avatar', maxCount: 1 },
  { name: 'gallery', maxCount: 8 }
]

haruharu님의 프로필

haruharu

질문자

2021.08.03

강의에서도  { data: formData } 해당부분 조심하라고 하셔서 확인했었고 다 안되서 좌절했는데 maxCount 까지 적으니까 되네요. 이상한데서 계속 삽질하고 있었네요 ㅠㅠ 

1

formData.append('data1', 파일);
formData.append('data2', 파일);

이런식으로 해야 합니다.

haruharu님의 프로필

haruharu

질문자

2021.08.03

s3에 업로드하는 multer를 두가지로 나누어서 만들었는데요.

하나는 사진 업로드용

하나는 동영상 업로드용

이런경우 하나의 라우터에 두개의 multer를 사용하는것은 불가능한가요??

router.post(
'/upload',
uploadPicture.single('data1'),
uploadVideo.single('data2'),
(req, res) => {
console.log(req.body);
console.log(req.files);
res.send('ok');
}
);

해본 적도 없고 공식문서에도 없어서 가능한지 안 가능한지 모르겠네요. 얼핏 보기에는 안 될것같진 않은데 해봐야 알 것 같습니다.

haruharu님의 프로필

haruharu

질문자

2021.08.03

제가 해보고있는데 안되네요 ㅜ

formData.append('data1', 파일);
formData.append('data2', 파일);

위에서 말씀해주신대로 위처럼 해서 작성했고

router.post(
'/upload',
uploadData.fields(['data1', 'data2']),
(req, res) => {
console.log(req.body);
console.log(req.files);
res.send('ok');
}
);

이렇게 작성하면 MulterError: Unexpected field 해당 에러가 뜹니다. 찾아봐도 front에서 보내는 key랑 일치하지 않아서 그런것만 나오는데 혹시 확인해볼만한 부분이 있을까요?

single로 하나만 받을때는 업로드가 되는데 두개가 안되네요 ㅜ

haruharu님의 프로필

haruharu

질문자

2021.08.03

성공했습니다 ㅜㅜ 매번 빠르게 답변해주셔서 감사합니다 ㅠㅠ

채널톡 아이콘