使用multipart改造上传图像

时间:2016-01-06 18:40:34

标签: android json retrofit multipart

我正在尝试使用用户名和密码上传图片以及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) {                       
                    }
                });

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

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

任何人都可以解释我做错了什么以及如何解决它?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

对于请求主体,使用多部分构建器可能比@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);