[Fix] Android 파일 업로드 (파일 전송) 시 API 호출에 실패할 때
❌ 증상
- 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일 경우 로직을 추가하여 헤더를 정상적으로 할당해주었다.