Можно ли отправить Multipart Image внутри класса POJO? - PullRequest
0 голосов
/ 18 ноября 2018

Я сейчас использую Retrofit для отправки файла изображения на сервер с идентификатором строки. Я хочу отправить Multipart Image с помощью String Id, используя класс POJO. Возможно ли это?

Мой класс POJO ->

public class ImageRequest {

    private String ImageId;
    private MultipartBody.Part Image;

    public MultipartBody.Part getImage() {
        return Image;
    }

    public void setImage(MultipartBody.Part Image) {
        this.Image = Image;
    }

    public String getId() {
        return Id;
    }

    public void setId(String cropId) {
        this.Id = Id;
    }
}

Моя функция загрузки ->

private void UploadFiles() {
        File uploadFile = fileArrayList.get(0);
        if (uploadFile != null) {
            Log.d(TAG, "UploadFiles: File Name is -> " + uploadFile.getName());

            // Create a request body with file and image media type
            RequestBody fileReqBody = RequestBody.create(MediaType.parse("image/*"), uploadFile);

            // Create MultipartBody.Part using file request-body,file name and part name
            MultipartBody.Part Image = MultipartBody.Part.createFormData("upload", uploadFile.getName(), fileReqBody);

            //  Id is the name of the Parent Folder...
            String Id = uploadFile.getParentFile().getName();

            ImageRequest.setImage(Image);
            ImageRequest.setId(Id);

            Api.uploadImage(ImageRequest, new Callback<BasicResponse>() {
                @Override
                public void onResponse(Call<BasicResponse> call, Response<BasicResponse> response) {
                    if(response.body()!=null){
                        Log.d(TAG, "onResponse: Success" + response.body().getResponse().toString());
                    }
                }

                @Override
                public void onFailure(Call<BasicResponse> call, Throwable t) {
                    Log.d(TAG, "onResponse: Failure");
                }
            });
        }
    }

Моя функция UploadImage ->

public static void uploadImage(ImageRequest imageRequest, Callback<BasicResponse> callback) {
        UploadImageApi uploadImageApi = retrofit.create(UploadImageApi.class);
        Call<BasicResponse> call = uploadImageApi.uploadImageFun(imageRequest);
        call.enqueue(callback);
    }

Это API-интерфейс моего загружаемого изображения ->

public interface UploadImageApi {
        @POST(UPLOAD_FILE_URL)
        Call<BasicResponse> uploadImageFun(@Body ImageRequest imageRequest);
    }

На стороне Spring я извлекаю класс ImageRequest и сопоставляю его с ImageRequest POJO (аналогично Android).

    @RequestMapping(value = "/UploadImage",method = RequestMethod.POST, consumes = "application/json", produces = "application/json")
        @ResponseBody
        public BasicResponse UploadImage(@RequestBody CropImageRequest cropImageRequest) {
                basicResponse.setResponse("HEllo there Response is successful");
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                System.out.println("Exception Occured...");
            }
            return basicResponse;
}

Я не могу получить изображение на стороне Spring, может кто-нибудь сказать мне мою ошибку, я новичок в Spring и Retrofit. Благодаря.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...