마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

레트로핏 form-data 질문

0 추천

레트로핏을 이용해 서버로 form-data 방식으로 이미지와 string 값을 전달 하는 작업을 하고 있습니다. rememberLauncherForActivityResult 메소드를 사용해서 애뮬레이터에 저장된 사진을 가져와 뷰를 띄우고

버튼 클릭시 서버와 통신하는 기능을 구현중인데 api 함수를 구성하고 버튼 클릭시 해당 에러가 나서 질문합니다.

/storage/emulated/0/Pictures/.thumbnails: open failed: EISDIR (Is a directory)

api와 관련된 코드 올립니다

어떤부분이 잘못됐는지 알려주시면 감사하겠습니다

jongjoon (340 포인트) 님이 2023년 2월 16일 질문

1개의 답변

0 추천
 
채택된 답변
찾아보면 EISDIR은 Directory에 파일처럼 저장하려고 생기는 에러네요. 예를들면, (이전에) 님이 파일이름으로 디렉토리를 생성해 놓고 파일인줄 알고 작업을 하려다가 빌셍하는 경우라고 보시면 됩니다. 해당 이름으로 생성된 Direcotry가 있으면 삭제를 하시고 진행을 하면 될 것 같습니다.

참고로 Kotlin을 사용하시면 Retrofit에 콜백대신 Corotuine을 사용하세요. 콜백을 코루틴으로 대체할 수도 있습니다. 처리가 직관적이 됩니다.
spark (224,800 포인트) 님이 2023년 2월 16일 답변
jongjoon님이 2023년 2월 21일 채택됨
2번째 사진속의 코드에서, 버튼 클릭시 launcher가 실행돼서 그 속에서 이미지를 꺼내면 로그 값으로 이렇게 뜨게 했는데content://com.android.providers.media.documents/document/image%3A1000000034

어느 부분이 잘못됐는지 여쭤봐도 될가요??
이걸로 해봤는데도 안됩니다 ㅠㅠ
혹시 모르니 에뮬레이터를 새로 만들어서 실행해 보세요. 그리고 파일익스플로러를 열어서 /storage/emulated/0/Pictures/.thumbnails를 체크해 보시고, 파일 uri의 실제위치를 확인해 보세요. 그리고 혹시 미디어파일 관련한 권한 문제는 아닌지도 확인해 보시구요.
...