티스토리 뷰
반응형
위 사진과 같이 파일과 파일에 해당하는 파일명, 설명, 태그 등 사용자에게 입력 받은 값을 서버로 전송해야할 일이 있습니다.
file 만 보내는글은 많지만 json까지 같이 보내는건 많지 않아서 작성해봅니다.
일반적으로 axios를 사용하여 body 부분에 json 형식으로 추가해서 보냈지만 file전송을 위해 FormData()를 사용했을 경우 body 부분에 json 형식의 데이터를 보낼 수 없습니다.
formData에 append()를 사용하여 file 및 json, array를 보내는 방법은 다음과 같습니다.
/*FormData 변수 */
const [file, setFile] = useState(null); // 파일 저장 할 State
//파일 추가
const handleChange = (file) => {
setFile(file[0]);
};
//추가된 파일 전송 버튼 (전송 Button)
const onHandlePost = () => {
const formData = new FormData();
formData.append("file", file);
let jsonData = JSON.stringify({ title: "jsonTitle", tag: "jsonTag", content: "jsonContent" });
let arrayData = ["arrayTitle", "arrayTag", "arrayContent"];
formData.append("jsonData", jsonData);
formData.append("arrayData", arrayData);
if (file) {
// 선택된 파일이 있는 경우에만
console.log(formData);
axios
.post(`${API_SERVER}/api/files/uploadFile`, formData, {
headers: headers, // headers에 API 인증키 전달
})
.then((res) => {
console.log(res);
if (res.data) {
//success
alert("데이터 저장 성공");
} else {
//err
alert("데이터 저장 실패");
}
})
.catch((err) => {
//err
alert("에러 발생 : "+err);
});
} else {
//파일 선택 안한 경우
}
};
array의 경우 append만 하면 바로 보낼 수 있지만
JSON의 경우 JSON.stringify() 함수를 사용해야합니다.
사용하지않을경우 전송은 되지만 Server 단에서 [Object object] 이렇게 넘어와서 사용할 수 없습니다.
express에서 multer을 사용하여 FormData()를 받는 방법은 여기에 있습니다.
https://seung-min.tistory.com/45
반응형
'Web' 카테고리의 다른 글
[React] Sweet Alert, 이쁜 알림창 띄우기 (0) | 2022.05.25 |
---|---|
[React] Filter 및 includes 사용 데이터 필터링 (0) | 2022.05.11 |
[React] ID 기억하기 cookie에 값 저장 (react-cookie) (0) | 2022.05.07 |
[React]react-spinners를 사용한 Loading 창 만들기(Modal 안에 Loading 창 넣기) (0) | 2022.05.05 |
[React] base64로 여러 장의 이미지를 서버로 전송 (0) | 2022.05.04 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- ERROR: failed to solve: no support for running processes with linux/amd64/v3 platform
- AWS #인바운드 #SSH #인스턴스 연결
- mysql date between performance
- mysql date
- node.js 파일 저장
- Swal #sweetalert2 #alert #알림창 띄우기 #react swal
- docker # docker build # m1 docker build
- see ec2 instance connect prerequisites at https://docs.aws.amazon.com/awsec2/latest/userguide #인스턴스 연결 안됨
- docker mysql
- Mac docker.for.mac.host.internal
- BOJ #JS
- Procedure #mysql #mysql Procedure #mysql 반복문 #Procedure 반복문 #mysql insert 반복문
- linux/amd64/v2
- reack-cookies #아이디 저장하기 #react 아이디 저장 #react cookie #리엑트 아이디 저장하기
- React filter #js Includes #React Filter includes
- JavaScript #Programmers #lvl2 #프로그래머스 오픈채팅방 # 오픈채팅방 문제
- mysql date type
- FormData #FormData 파일전송 #FormData append json # React FormData File #React FormData append Json
- mysql date between # mysql date between 대소 비교 연산자
- react #img 전송
- Express multer #Express File 저장 #node.js
- supported: linux/amd64
- node.js #node.js pdf만들기 #node.js pdfkit
- PDF #pdfkit
- Pytorch #Yolov5 #Segementation
- 이미지 전송 # 이미지 업로드 #이미지 여러장 #이미지 여러장 업로드 #react 이미지 업로드 #react 이미지 여러장 업로드
- excel 파일 만들기 #node.js #express excel 파일 만들기 #데이터 입력해서 excel 파일 만들기
- PoolCluster : Error: connect ECONNREFUSED 127.0.0.1:3306)
- react #react-spinners #modal loading #overlay #로딩창 #react 로딩창 만들기
- ec2 instance connect is unable to connect to your instance. ensure your instance network settings are configured correctly for ec2 instance connect. for more information
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함