retrofit
retrofit copied to clipboard
Missing image files when uploading.
What kind of issue is this?
- This is a very rare case whereby, it happens to 'some client' sending image files missing when using retrofit. Below here my sample code.
`MultipartBody.Part[] imageUserList = new MultipartBody.Part[5]; RequestBody propertyImage = null; for (int i=0; i<5; i++) { if (i == 0) { propertyImage = RequestBody.Companion.create(meterFile, MediaType.parse("image/"+ FileUtils.getExtension(meterFile.getAbsolutePath()))); imageUserList[i] = MultipartBody.Part.createFormData("meter", meterTest.getName(), propertyImage); } if (i == 1){ propertyImage = RequestBody.Companion.create(bckCarFile,MediaType.parse("image/"+FileUtils.getExtension(bckCarFile.getAbsolutePath()))); imageUserList[i] = MultipartBody.Part.createFormData("back", bckCarTest.getName(), propertyImage); }
if (i == 2){
propertyImage = RequestBody.Companion.create(leftCarFile,MediaType.parse("image/"+FileUtils.getExtension(leftCarFile.getAbsolutePath())));
imageUserList[i] = MultipartBody.Part.createFormData("left", leftCarTest.getName(), propertyImage);
}
if (i == 3){
propertyImage = RequestBody.Companion.create(rightCarFile, MediaType.parse("image/"+FileUtils.getExtension(rightCarFile.getAbsolutePath())));
imageUserList[i] = MultipartBody.Part.createFormData("right", rightCarTest.getName(), propertyImage);
}
if (i == 4){
propertyImage = RequestBody.Companion.create(frontCarFile, MediaType.parse("image/"+FileUtils.getExtension(frontCarFile.getAbsolutePath())));
imageUserList[i] = MultipartBody.Part.createFormData("front", frontCarTest.getName(), propertyImage);
}
}
@Multipart
@POST("submitReport")
Call<JsonObject>submitReport(@Part MultipartBody.Part[] files, @PartMap Map<String,RequestBody> reportDetails);`
Setting files here
`File tempFile = new File(context.getExternalFilesDir(Environment.DIRECTORY_PICTURES), context.getApplicationInfo().loadLabel(context.getPackageManager()).toString());
if (!tempFile.exists()){
tempFile.mkdirs();
}
if (typeChoose.equals("1")){
meterFile = new File(tempFile, System.currentTimeMillis() + "testMeterCar.jpg");
FileOutputStream fo = null;
try {
meterFile.createNewFile();
fo = new FileOutputStream(meterFile);
fo.write(bytes.toByteArray());
fo.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}`
where do i miss here? coz missing file image when after successfull upload to server only happen some user.
Hi, You can use this library https://github.com/gotev/android-upload-service for uploading files. I am using this in my project and it is working great.