POST Multipart Form Data using Retrofit 2.0 including image

前端 未结 10 1740
名媛妹妹
名媛妹妹 2020-11-22 11:07

I am trying to do a HTTP POST to server using Retrofit 2.0

MediaType MEDIA_TYPE_TEXT = MediaType.parse(\"text/plain\");
MediaType MEDIA_TYPE         


        
10条回答
  •  醉梦人生
    2020-11-22 11:52

    So its very simple way to achieve your task. You need to follow below step :-

    1. First step

    public interface APIService {  
        @Multipart
        @POST("upload")
        Call upload(
            @Part("item") RequestBody description,
            @Part("imageNumber") RequestBody description,
            @Part MultipartBody.Part imageFile
        );
    }
    

    You need to make the entire call as @Multipart request. item and image number is just string body which is wrapped in RequestBody. We use the MultipartBody.Part class that allows us to send the actual file name besides the binary file data with the request

    2. Second step

      File file = (File) params[0];
      RequestBody requestFile = RequestBody.create(MediaType.parse("multipart/form-data"), file);
    
      MultipartBody.Part body =MultipartBody.Part.createFormData("Image", file.getName(), requestBody);
    
      RequestBody ItemId = RequestBody.create(okhttp3.MultipartBody.FORM, "22");
      RequestBody ImageNumber = RequestBody.create(okhttp3.MultipartBody.FORM,"1");
      final Call request = apiService.uploadItemImage(body, ItemId,ImageNumber);
    

    Now you have image path and you need to convert into file.Now convert file into RequestBody using method RequestBody.create(MediaType.parse("multipart/form-data"), file). Now you need to convert your RequestBody requestFile into MultipartBody.Part using method MultipartBody.Part.createFormData("Image", file.getName(), requestBody); .

    ImageNumber and ItemId is my another data which I need to send to server so I am also make both thing into RequestBody.

    For more info

提交回复
热议问题