인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

dvdve님의 프로필 이미지

작성한 질문수

핸즈온 리액트 네이티브

10.10 :: 글 저장하기

글 저장시 파일 저장위치 관련 질문드립니다!

해결된 질문

작성

·

33

·

수정됨

0

post를 저장할 시

photoUris 위치가 안드로이드는

photoUris ["file:///storage/emulated/0/Download/s-34.jpeg", "file:///storage/emulated/0/Download/s-33.jpeg"]

이렇게 콘솔에 찍히고

 

아이폰은

photoUris ["file:///var/mobile/Media/DCIM/107APPLE/IMG_7585.JPG", "file:///var/mobile/Media/DCIM/107APPLE/IMG_7584.JPG"

이렇게 찍혀서

api/storage 의 uploadPhoto 에 있는

if (uri.startsWith('http')) 이 조건을 충족시키지 못해서 진행이 안되는거 같아서 질문드립니다.

 

 

 

답변 2

1

김범준님의 프로필 이미지
김범준
지식공유자

Screenshot 2025-03-23 at 22.37.47.png.webp

 

현재 코드는 문제없이 잘 동작하고 있습니다.

 

http로 시작하는 uri는 이미 업로드가 완료되어 firebase의 주소를 갖고 있는 상태이기 때문에 추가로 업로드를 할 필요가 없습니다. 그래서 uploadPhoto에서 http로 시작하는 uri 는 다른 처리는 하지 않고 그대로 return 하는 것입니다.

dvdve님의 프로필 이미지
dvdve
질문자

firebase 요금제 설정 문제 였네요ㅠ 감사합니다 선생님!

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다.

dvdve님께서 경험하고 계신 문제는 iOS에서 반환되는 이미지 URI가 로컬 파일 경로로 되어 있어, uploadPhoto 함수에서 해당 URI가 HTTP로 시작하지 않아 발생하는 것입니다. 이 문제는 로컬 파일을 올바르게 서버에 업로드하기 위해 처리 방식의 차이에서 발생합니다.

문제 해결을 위한 제안사항

  1. 올바른 URI 체크 및 변환:

    • 로컬 URI를 업로드할 수 있도록 변환하거나, 혹은 로컬 파일 경로를 올바르게 처리하도록 기존 로직을 수정해야 합니다. 보통의 경우 로컬 파일은 서버로 직접 업로드할 수 없습니다.
    • expo-file-system 이나 react-native-fs를 사용하여 로컬 URI를 변환하거나 서버에 업로드할 수 있도록 필요한 방식으로 조작하면 됩니다.
  2. 중간 서버 사용을 고려:

    • 만약 직접 서버에 업로드가 불가능하다면, 중간 서버를 사용해 한 번 변환 후 업로드 하는 방식도 고려해볼 수 있습니다.
  3. 관련 문서 참고:

    • expo-image-picker공식 문서를 참고하여 로컬 파일의 처리를 어떻게 해야 하는지 확인하세요.

유사한 경우의 도움말

iOS에서 ph://로 시작하는 이미지 처리 문제와 같은 사례에서 getAssetInfoAsync 함수를 사용하는 방식이 제안되었습니다.


저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

dvdve님의 프로필 이미지

작성한 질문수

질문하기