개발자

리액트에서 이미지를 업로드하고 싶습니다

2022년 11월 17일조회 692

안녕하세요 리액트를 공부중인 학생입니다! 리액트를 이용해 가보고 싶은 맛집을 리스트에 업로드 하는 페이지를 제작중입니다!! 다름이 아니라 가게이름, 음식의 종류, 간단한 메모는 업로드하고 리스트에서 불러오기가 가능한데 이미지 파일에 대한 궁금증이 생겼습니다. 만약 const [file, setFile] = useState()로 선언한 후 <input type='file' onChange ={()=>setFile(e.target.files)}를 하고 버튼을 추가하여 리스트에 추가하려고 하면 프론트엔드에서는 리스트에 사진은 구현이 안되나요? 백엔드를 이용해야 할까요? 미리 PUBLIC파일에 저장한 이미지들은 process.env.PUBLIC_URL을 통해 불러올 수 있는데 새롭게 업로드한 글은 PUBLIC 폴더에 사진 저장이 안되서 어떻게 구현해야 할 지 의문입니다!

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 1

손정현님의 프로필 사진

프론트엔드에서는 리스트에 사진은 구현이 안되나요? = 가능하지 않을까요? 정확한 요구사항이 뭔지는 잘 모르겠습니다만 e.target.files 자체가 리스트입니다. 그래서 onChange ={()=>setFile(e.target.files)} 이렇게 하셨다면, file은 리스트니 보여주고 싶은 위치에서 반복문을 돌면서 이미지 파일을 사용하시면 되지 않을까 싶네요. 참고: https://web.dev/read-files/ https://developer.mozilla.org/ko/docs/Web/API/FileList 혹시 이미지 업로드한 것을 페이지 이탈 후에 재방문했을 때 다시 불러오는 것이 목적이라면, 어딘가에 저장을 해야하니 백엔드를 통해서 DB 또는 파일 시스템에 저장하실수는 있습니다. 또는 CDN으로 이미지를 업로드 후, CDN이 제공하는 url을 사용하실수도 있어요. 아니면, aws s3 같은 곳에 이미지를 저장하고 s3 데이터를 url로 접근하실 수 있으니 그걸 사용하셔도 되구요. 방법은 많은 것 같습니다.

profile picture

익명

작성자

2022년 11월 17일

올려주신 링크 꼼꼼히 확인해보겠습니다! 추가로 저의 정확한 요구사항은 New.js라는 페이지에서 사진을 업로드하고 List.js라는 페이지에서 사진을 나타내는 것입니다 New.js에서 onCreate라는 함수를 통해 버튼을 누르면 입력된 파일이 초기 데이터 객체 배열에 추가가 되고 그 값들을 읽어오는 곳이 Item.js입니다! 텍스트로 타이핑한 값들은 onChange ={()=>setContent(e.target.value)} 후에 onCreate 함수로 저장이 잘 되고 잘 불러와지는데 이미지는 불러오기가 안되서 질문 드렸습니다! 답글 달아주신 내용 꼼꼼히 보면서 해결해보겠습니다 감사합니다!!

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로
키워드로 질문 모아보기

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!