TIL 023_사진 여러장 업로드하기

Alice Kim·2021년 6월 6일
2

TIL

목록 보기
23/23
post-thumbnail

🎯이미지 여러장 서버에 업로드 도전


호스트모드에서 숙소를 등록할 때 사진을 업로드 해야한다.

단순히 미리보기만 하는 것이 아니라, 숙소 등록이 완료된 후 DB에 사진 정보를 포함한 모든 정보들이 등록이 되어야 하고, 숙소리스트에서 방금 호스트가 등록한 숙소가 보여야 한다.

방법

이를 위해 사용한 것이 FormData()다.

const hostData = new FormData()

먼저 빈 FormData 객체를 생성한다.
그리고 hostData.append 사용하여 key/value 쌍을 추가한다.

hostData.append('room_info', fetchInfo)

여기서 주의해야 하는 점은 사진 파일을 stringfy하여 fetch 하면 안된다는 것이다.

사진 파일 외의 숙소 정보는 모두 한 변수에 담에 stringfy하고, 사진 파일은 별도로 append해주는 것이 포.인.트

문제점

그런데 여기서 한 가지 더 주의해야할 점은 사진을 3장 등록한다는 점이다.

input type=file 에서 사진을 업로드한 후 e.target.files[0]로 접근하면 해당 파일을 확인할 수 있다. 배열처럼 보이는가? 하지만 아니다.

처음에 files[0], files[1], files[2]로 사진을 hostData.append 하려하였으나 성공하지 못하였다.

결국엔!

모든 모든 사진을 selectedImgFiles라는 array state에 담아 관리하고, 이 selectdImgFiles를 forEach 로 순회하며 모두 files[0]이라는 이름으로 hostData에 append시켰더니 S3서버에 잘 담기는 것이 확인되었다.

배운점

숙소 등록 사이트에서 사진 등록은 핵심이다. 이를 해결하기 위해 온갖 Youtube, 구글링, 아티클을 다 보아도 사진 한장에 대한 솔루션은 보여도 여러장 업로드 방법은 찾기 힘들었다.

눈에 다크써클이 더 늘어나고 심신이 지쳐갈 즈음, StackOverFlow의 대댓글로 조그마한 글자로 올려진 글을 보고 시도해보았는데 성공.....ㅠㅠ

만세가 육성으로 나왔다.

이 맛에 코딩하는 건가요?

포기하지 않고, 코드와 타협하지 않으면 언젠가 나는 반드시 구현하고야 만다.

profile
If you don't build your dream, someone will hire you to help build theirs.

0개의 댓글

관련 채용 정보