【问题标题】:upload an image using retrofit with multipart使用带有多部分的改造上传图像
【发布时间】:2016-04-10 23:17:19
【问题描述】:

我正在尝试上传带有用户名和密码的 pojo 模型的图像,但是如何使用 multipart 来添加两者,这是我的代码,但不起作用:

EndpointInterface loginService = ServiceAuthGenerator.createService(EndpointInterface.class);
                RequestBody requestBody = RequestBody.create(MediaType.parse("multipart/form-data"), file);
                Call<String> call = loginService.singup(requestBody,us);
                call.enqueue(new Callback<String>() {@Override
                    public void onResponse(Response<String> response, Retrofit retrofit) {
                    }

                    @Override
                    public void onFailure(Throwable t) {                       
                    }
                });

us 是我的 pojo 模型,它包含用户和密码。 这是 API 接口:

    @Multipart
    @POST("reg/")
    Call<String> singup(
            @Part("myfile\"; filename=\"image.png\" ") RequestBody file,
            @Part("User") User user);

谁能解释我做错了什么以及如何解决它?

【问题讨论】:

    标签: android json retrofit multipart


    【解决方案1】:

    您应该使用MediaType.parse("image/*") 代替MediaType.parse("multipart/form-data") 吗?那是因为你稍后上传图片。

    【讨论】:

      【解决方案2】:

      对于请求正文,您最好使用多部分构建器而不是 @Multipart 注释。

          RequestBody body = new MultipartBuilder()
                                      .type(MultipartBuilder.FORM)
                                      .addFormDataPart("myFile", "image.png", RequestBody.create(MediaType.parse("image/jpg"), new File(picture.getLocalPath())))                              
                                      .addFormDataPart("user", gson.toJson(user))
                                      .build();
      
      
      
       @POST("reg/")
       Call<String> singup(@Body RequestBody image);
      

      【讨论】:

        猜你喜欢
        • 2018-04-15
        • 2021-11-17
        • 2015-09-16
        • 2017-01-14
        • 1970-01-01
        • 2017-11-02
        • 1970-01-01
        • 2014-05-06
        • 2013-07-19
        相关资源
        最近更新 更多