使用retrofit2 Put方法上传图像

时间:2017-07-06 13:58:07

标签: android file-upload retrofit2

我是改造新手2。我希望通过api服务上传图像作为文件。我通过选择一个文件并发现它的工作已经尝试了邮递员。但是通过手机我怎样才能上传图片文件。

这是Api的标题部分

string.Format

在我的身体部分,--header 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \

我想尝试,

我创建了一个带有body参数的类 UpdateRequest类

"picture", "name", "email" and "phone"

Api界面功能

    public class UpdateRequest {
        @SerializedName("picture")
        MultipartBody.Part picture;
        @SerializedName("name")
        public String name;
        @SerializedName("email")
        public String email;
        @SerializedName("phone")
        public String phone;

//Also Generated Getters and Setters for the parameters    

    }

现在我如何绑定细节并发送。

请帮助我..

1 个答案:

答案 0 :(得分:1)

您必须创建如下所示的多部分请求。

File file = new File(filePath);

RequestBody reqFile = RequestBody.create(MediaType.parse("image/*"), file);
MultipartBody.Part body = MultipartBody.Part.createFormData("picture", file.getName(), reqFile);
RequestBody name = RequestBody.create(MediaType.parse("text/plain"), "picture");

RequestBody name = RequestBody.create(MediaType.parse("text/plain"), "your_name"); 
RequestBody email = RequestBody.create(MediaType.parse("text/plain"), "your_email"); 
RequestBody phone = RequestBody.create(MediaType.parse("text/plain"), "your_phone"); 

HasMap<String,RequestBody> map = new HasMap<>();
map.put("name",name);
map.put("email",email);
map.put("phone",phone);


postImage(map, picture)

接口如下所示。

@Multipart
    @PUT("/")
    Call<ResponseBody> postImage(@PartMap Map<String, RequestBody> map, @Part MultipartBody.Part image);
}

另外,不要忘记在界面中添加@Multipart。