[Fix] Android 파일 업로드 (파일 전송) 시 API 호출에 실패할 때

장은봉·2023년 2월 21일
0

React Native

목록 보기
3/5

❌ 증상

  • Image Picker로 고른 파일을 업로드 하려고 했으나,
    iOS는 정상적으로 API를 호출하는 반면 Android는 API 호출 전에 예외가 발생 (Status Code 0)

🕵️‍♂️ 과정

  • Image Picker에서 넘어온 해당 파일의 경로는 모두 file://{path}로 받음.
  • Metro 콘솔 상 특별히 찍히는 로그가 없어, 플리퍼로 네이티브 레벨 로그를 확인.
  • 확인 결과
    react native android upload file status 0java.lang.IllegalArgumentException: multipart != application/x-www-form-urlencoded at okhttp3.MultipartBody$Builder.setType(MultipartBody.kt:241)
    위 로그가 찍혀있는 것을 확인하였고, 헤더에'Content-Type' : 'multipart/form-data가 제대로 들어가 있는지 확인

💻 해결

  • 바이너리 코드(base64)가 폼 데이터 형태로 API에 전송될 경우에
    Content-Type 헤더가 multipart/form-data로 할당되어있어야 한다.
  • 현재 다루는 프로젝트에서는 Axios를 싱글톤 형태로 사용하기 때문에
    body가 form data일 경우 로직을 추가하여 헤더를 정상적으로 할당해주었다.

0개의 댓글