Trouble
이미지를 서버에 전송하는 것에 대한 고민
형식(url, 파일)에 대한 고민
여러장의 이미지를 전달하는 방법에 대한 고민
이미지와 다른 post data를 함께 보내는 방법에 대한 고민
Solution
이미지 요청:
url이 아닌 파일 자체를 배열로 FormData에 append 후 서버에 전송
하나의 FormData 키값 ‘images’에 반복문(forEach)를 활용하여 배열의 요소를 하나씩 할당
content-type은 ‘multipart/form-data' ↔︎ 함께 보내는 string, number 데이터는 'application/json’
(string, number)데이터 요청:
JSON.stringyfy로 전송할 데이터들을 json문자열로 변환한 후 객체화이미지와 함께 전송하고, 구별짓기 쉽도록 blob형태로 json데이터를 감싸 전송
Code
const sendPostRequest = async () => {
const formData = new FormData();
const postJSON = JSON.stringify({
title: post.title,
content: post.content,
latitude: post.latitude,
longitude: post.longitude,
address: post.address,
});
const blob = new Blob([postJSON], { type: 'application/json' });
formData.append('post', blob);
post.images.forEach((image) => {
formData.append(`images`, image);
});
return axios.post(`${process.env.REACT_APP_API_URI}/api/posts`, formData, {
headers: {
Authorization: `Bearer ${token}`,
},
});
};
'Programming' 카테고리의 다른 글
[TIL] 클래스형과 함수형 컴포넌트의 차이 (0) | 2023.08.25 |
---|---|
[TIL] http, https의 차이 (0) | 2023.08.23 |
[TIL] Cookie, Session, Web Storage 차이 (0) | 2023.08.16 |
[TIL] CSR, SSR의 차이 (0) | 2023.08.15 |
[TIL] Refactoring using Array.fill() and const.ts (0) | 2023.08.08 |