참고한 자료 : https://developer.mozilla.org/ko/docs/Web/API/FormData/append
const [newReview, setNewReview] = useState({ comment: '', image: '' });
🔖참고 : 업로드하는 형태가 이미지일 경우 저장형태는 e.target.files[0]
ex)
<input
type="file"
accept="image/*"
onChange={e => {
setNewReview({ ...newReview, image: e.target.files[0] });
}}
/>
const formData = new FormData();
formData.append('content', newReview.comment);
formData.append('review_image', newReview.image)
fetch(`${BASE_URL}/reviews/lecture/${id}`, {
method: 'POST',
headers: {
Authorization: getToken(),
},
body: formData,
}).then(res => {
if (res.ok) {
alert('등록이 완료되었습니다.');
getReviewData();
}
});
};
const [newReview, setNewReview] = useState({ comment: '', image: '' });
const uploadReview = e => {
e.preventDefault();
const formData = new FormData();
formData.append('content', newReview.comment);
formData.append('review_image', newReview.image);
fetch(`${BASE_URL}/reviews/lecture/${id}`, {
method: 'POST',
headers: {
Authorization: getToken(),
},
body: formData,
}).then(res => {
if (res.ok) {
alert('등록이 완료되었습니다.');
getReviewData();
}
});
};
return //관련없는 부분 생략
<Form onSubmit={uploadReview}>
<div>
<textarea
className="contents"
type="text"
placeholder="리뷰 내용을 입력해주세요"
onChange={e =>
setNewReview({ ...newReview, comment: e.target.value })
}
/>
<ReviewButton>
<button>작성하기</button>
</ReviewButton>
</div>
<input
type="file"
accept="image/*"
onChange={e => {
setNewReview({ ...newReview, image: e.target.files[0] });
}}
/>
</Form>
신기한 백엔드의 세계! 데이터 전송하고 이미지 업로드 되는 거 너무 신기해!!