retrofit icon indicating copy to clipboard operation
retrofit copied to clipboard

Missing image files when uploading.

Open hafiz013 opened this issue 4 years ago • 1 comments

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.

hafiz013 avatar Nov 19 '20 03:11 hafiz013

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.

vedraj360 avatar Sep 22 '21 07:09 vedraj360