[WIL] 미니프로젝트 (FormData로 이미지 url이랑 다른 content랑 같이 서버로 보내기 with. AXIOS)
FormData로 이미지 url이랑 다른 content랑 같이 서버로 보내기
//POSTWRITE.js
const [imageUrl, setImageUrl] = React.useState(""); //보내는 image
const [title, setTitle] = React.useState("");
const [content, setContent] = React.useState("");
const [category, setCategory] = React.useState("");
const [price, setPrice] = React.useState(0);
const changeContent = (e) => {
setContent(e.target.value);
}
const changePrice = (e) => {
setPrice(e.target.value);
}
const changeTitle = (e) => {
setTitle (e.target.value);
}
const changeCategory = (e) => {
setCategory(e.target.value);
}
const changeImageUrl = (e) => {
setImageUrl(e.target.files[0]);
}
const submit = () => {
if(imageUrl === "" || title === "" || category === "" || content === "" || price === "" ){
alert('모든 사항을 기입해주세요.');
return;
}else{
dispatch(PostActions.addPost(imageUrl, title, category, content, price));
}
<input type="text" id="title" name="title" placeholder="글 제목" onChange={changeTitle}/> ...
<input id="image" name="image" type="file"
onChange={(e) => {changeImageUrl(e);}}/>
<input id="price" name="price" className="has-prefix" type="number" placeholder="가격 (선택사항)"
onChange={changePrice}/>
//post.js (redux store)
const addPost = (imageUrl, title, category, content, price) => {
const formData = new FormData();
formData.append("title", title);
formData.append("category", category);
formData.append("content", content);
formData.append("price", price);
formData.append("image", imageUrl);
return async function (dispatch, getState, {history}){
try{
await axios.post("http://----server url ----/api/write", formData, {
headers: {
Authorization: `BEARER ${sessionStorage.getItem("token")}`
},
},
{ withCredentials: true } // cors Error 방지
);
window.alert('게시글 작성을 성공하였습니다.');
history.replace('/');
}
catch(err){
window.alert('게시글 작성에 실패하였습니다.')
console.log(err);
return;
}
}
}
미니프로젝트에서 로그인, 회원가입, 메인페이지 (CRUD의 Read부분)을 맡았었다. 처음엔 순조롭게 잘 진행되었고 화요일쯤엔 다 마무리가 되는 듯하였다. 하지만 일은 수요일에 벌어지고 말았다. 갑자기 팀원이 못하겠다고 하면서 연습하던/공부하던 파일을 슬랙에 던져놓았다. 청천벽력같은 말이었다. 그 때부터 백엔드팀원들의 도움을 받아서 C와 D를 부랴부랴하였지만 결국 다 마치지 못하였다.
이번 프로젝트 주차로 소통의 중요성을 크게 깨달았다. 너무 안일하게 믿고만 있었던 것 같다. 다음주차부터는 팀원들과 어디까지 진행이 되었는지 상세히 소통하도록 할 것이다.
Author And Source
이 문제에 관하여([WIL] 미니프로젝트 (FormData로 이미지 url이랑 다른 content랑 같이 서버로 보내기 with. AXIOS)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@isabel_noh/WIL-미니프로젝트저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)