인프런 커뮤니티 질문&답변

김명재님의 프로필 이미지
김명재

작성한 질문수

[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지

프로젝트 구조 갖추기

리액트에서 post img불러오기

해결된 질문

작성

·

727

0

저는 html대신 react를 사용해서 프로젝트를 진행중인데요.
단순히 html로 프로젝트를 진행할 때는 아무 이상없이 미리보기 이미지도 잘 나오고 이미지 정보도 db에 저장이 잘됩니다.

그런데 react를 사용해서 하면 미리보기 이미지가 불러와지지 않습니다.
그래서 구글링해본 결과 파일 경로 앞에 http://localhost:8005를 붙어야 한다, encodeURI함수를 이용해서 경로를 변환시켜줘여 한다. 등 나와있는 정보대로 해보았지만 다 안되네요..
그러다가 FileReader를 사용해서 파일 경로를 데이터URI형식으로 변환해야 한다고 해서 해봤는데 이걸 사용하며는 img가 잘나오더군요. 문제는
FileReader를 사용하여 파일을 변환하면 파일의 경로가 너무 길어져 413에러가 발생합니다..

그래서 리액트에서는 대체 어떻게 img를 다뤄야 할지 잘 모르겠습니다..


아래 코드들은 리액트에서 다양한 방법으로 경로 설정을 하고 그 후 개발자 도구에서 복사해온 태그들 입니다.
물론 한개도 제대로 나온 이미지는 없습니다


1.html로 프론트를 다뤘을때랑 같은 코드(실행은 리엑트에서 하고 단순히 html로 실행하면 아래 태그는 잘 나옴)

<img id="image-preview" src="img/스크린샷%202023-08-31%20오후%201.54.471694844382032.png" alt="미리보기" />

2.local주소 붙이고 encodeURI로 경로 변환
<img id="image-preview" src="http://localhost:8005/img/%C3%A1%C2%84%C2%89%C3%A1%C2%85%C2%B3%C3%A1%C2%84%C2%8F%C3%A1%C2%85%C2%B3%C3%A1%C2%84%C2%85%C3%A1%C2%85%C2%B5%C3%A1%C2%86%C2%AB%C3%A1%C2%84%C2%89%C3%A1%C2%85%C2%A3%C3%A1%C2%86%C2%BA%202023-08-31%20%C3%A1%C2%84%C2%8B%C3%A1%C2%85%C2%A9%C3%A1%C2%84%C2%92%C3%A1%C2%85%C2%AE%201.54.471694844547805.png" alt="미리보기"></img>


이런식으로 encodeURI랑 로컬주소 고려해서 경우의 수 4가지 다 해봤는데 안됐습니다.

답변 1

1

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

리액트는 create-react-app으로 실행하시는 건가요? 일단 서버에서 리액트를 실행하는 게 아니면 서버 주소를 붙여야하는 건 맞고요. 서버 주소가 localhost:8005가 맞나요?

그리고 img 폴더는 express.static에 등록한 폴더가 맞나요? encodeURI는 안 하셔도 됩니다.

김명재님의 프로필 이미지
김명재
질문자

서버에서 리액트를 실행한거라 서버주소 붙일 필요도 없었고, express.static에 등록한 폴더명에 오타가 있었네요... 에러가 안떠서 서버 쪽에서 설정을 잘못한거일 수 도 있다는 생각을 못하고 계속 src경로 문제라고만 생각했던것 같습니다...칼 답변 주셔서 감사합니다!

김명재님의 프로필 이미지
김명재

작성한 질문수

질문하기