이전글 Node.js | multer를 이용한 파일 업로드 (input type='file')을 읽고오세요!
1. form 태그 작성
<form name='accountFrm' onSubmit={this.handleSubmit} encType='multipart/form-data'>
<p><input type='text' name='email'></input></p>
<p><input type='password' name='pwd'></input></p>
<p><input type='password' name='pwdcheck'></input></p>
<p><input type='text' name='name'></input></p>
<p><input type='text' name='nickname'></input></p>
<p><input type='text' name='phone'></input></p>
<p><input type='file' accept='image/jpg,impge/png,image/jpeg,image/gif' name='profile_img'></input></p>
<p><input type='submit' value='회원가입'></input></p>
</form>
2. handleSubmit메서드 작성
파일이 없는 일반 form태그였다면 json형식으로 만들었겠지만, 파일이 있다면 FormData로 만들어줘야 합니다.
formData로 만들어줘야 multer에서 인식하는 것 같음!
handleSubmit = (event) => {
event.preventDefault();
const formData = new FormData();
formData.append('email',event.target.email.value);
formData.append('pwd', event.target.pwd.value);
formData.append('profile_img', event.target.profile_img.files[0]);
formData.append('name', event.target.name.value);
formData.append('nickname', event.target.nickname.value);
formData.append('phone', event.target.phone.value);
this.register(formData)
}
3. fetch를 이용하여 서버(Node.js)로 보내기
여기서 주의할 점은 headers에 'Content-Type': 'multipart/form-data'을 추가해선 안 됩니다!(에러발생)
그냥 보내면 알아서 multipart/form-data로 자동으로 인식해줍니다.
register = (regiInfo) => {
fetch('http://localhost:3002/users/account', {
method:'post',
body: regiInfo
})
.then(res => res.json())
.then(data => alert(data.msg))
}
4. 서버(Node.js)에서 multer를 이용한 업로드하기
router.post('/account', upload.single('profile_img'), function (req, res, next) {
console.log('/account ' , req.body);
console.log(req.file);
console.log(req.file.filename);
res.send({msg:'도착'});
})
'STUDY > React' 카테고리의 다른 글
React | socket.io를 활용한 채팅 (+ Node.js, redux) (6) | 2020.03.18 |
---|---|
React | 이미지 업로드 후 미리보기 (on Change / image preview) (0) | 2020.01.21 |
React | LifeCycle API (생명주기 메서드) (0) | 2020.01.15 |
React | Node.js를 backend로 사용하는 Passport-local 로그인! (2) | 2020.01.14 |
React | Node.js와 React 연동하기 (+ CORS 에러 해결하기) (0) | 2020.01.13 |