i use com.github.ChiliLabs:ChiliPhotoPicker:0.3.1 to select photos to upload. It gives me such a path to the photo
file:///storage/emulated/0/KatePhotos/1641933129.jpg
my code for uploading the image to the server
fun formData(uri: ArrayList<Uri>) {
// Create Retrofit
val retrofit = Retrofit.Builder()
.baseUrl("https://httpbin.org")
.build()
// Create Service
val service = retrofit.create(APIService::class.java)
// List of all MIME Types you can upload: https://www.freeformatter.com/mime-types-list.html
// Get file from assets folder
val imgFile = File(uri[0].path)
val fields: HashMap<String?, RequestBody?> = HashMap()
fields["email"] = ("test@test.com").toRequestBody("text/plain".toMediaTypeOrNull())
val filename = imgFile.name
fields["file\"; filename=\"$filename\" "] =
(imgFile).asRequestBody("image/*".toMediaTypeOrNull())
CoroutineScope(Dispatchers.IO).launch {
// Do the POST request and get response
val response = service.uploadEmployeeData(fields)
withContext(Dispatchers.Main) {
if (response.isSuccessful) {
// Convert raw JSON to pretty JSON using GSON library
val gson = GsonBuilder().setPrettyPrinting().create()
val prettyJson = gson.toJson(
JsonParser.parseString(
response.body()
?.string() // About this thread blocking annotation : https://github.com/square/retrofit/issues/3255
)
)
println(prettyJson)
} else {
Log.e("RETROFIT_ERROR", response.code().toString())
}
}
}
}
The problem is that when I use decoding on the server, I only get a piece of the image. Tell me what I'm doing wrong and how can I fix it?
Its my response:
{
"args": {},
"data": "",
"files": {
"file": "data:image/*;base64,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
},
"form": {
"email": "test@test.com"
},
"headers": {
"Accept-Encoding": "gzip",
"Content-Length": "387553",
"Content-Type": "multipart/form-data; boundary\u003da3942d3b-e13b-43de-9abd-642750914c37",
"Host": "httpbin.org",
"User-Agent": "okhttp/4.9.0",
"X-Amzn-Trace-Id": "Root\u003d1-61ddfc53-4b83816821e2302e6f2b8951"
},
"origin": "",
"url": "https://httpbin.org/post"
}
and so I see what php saves, even notepad considers it to be text.

