Retrofit2.0 上传图片

来源:互联网 发布:云网络 编辑:程序博客网 时间:2024/06/06 09:02

使用Retrofit2.0上传图片时,有三种方法可以上传。

1:使用@Part(“file\”; filename=\”avatar.jpg”) RequestBody的方式

    /**     * 2.3修改用户头像,使用@Part("file\"; filename=\"avatar.jpg") RequestBody的方式     * @return     */    @Multipart    @POST(Api.uploadUserImage)    Observable<Response<String>> uploadUserImage(@Query("uid") String uid,                                                 @Query("token") String token,                                                 @Part("file\"; filename=\"avatar.jpg") RequestBody avatar);
        //调用        public Observable<String> uploadUserImage(String uid, String token, String appKey,File file) {        RequestBody requestBody = RequestBody.create(MediaType.parse("image/*"), file);        Observable<Response<String>> uploadUserImage = create(TestApi.class).uploadUserImage(uid,token,requestBody);        return uploadUserImage.compose(this.<String>applySchedulers());    }

2:使用@Multipart,@Query和@Part MultipartBody.Part的方式。

    /**     * 2.3修改用户头像,使用@Multipart,@Query和@Part MultipartBody.Part的方式。     * @return     */    @Multipart    @POST(Api.uploadUserImage)    Observable<Response<String>> uploadUserImage(@Query("uid") String uid,                                                 @Query("token") String token,                                                 @Part MultipartBody.Part avatar);
        //调用        public Observable<String> uploadUserImage(String uid, String token,File file) {        RequestBody requestBody = RequestBody.create(MediaType.parse("image/*"), file);        MultipartBody.Part fileBody = MultipartBody.Part.createFormData("file", file.getName(),requestBody);        Observable<Response<String>> uploadUserImage = create(TestApi.class).uploadUserImage(uid,token,fileBody);        return uploadUserImage.compose(this.<String>applySchedulers());    }

3:使用@Body MultipartBody的方式。

    /**     * 2.3修改用户头像,使用@Body MultipartBody的方式。     * @param body     * @return     */    @POST(Api.uploadUserImage)    Observable<Response<String>> uploadUserImage(@Body MultipartBody body);
    //调用    public Observable<String> uploadUserImage(String uid, String token,File file) {        RequestBody requestBody = RequestBody.create(MediaType.parse("image/*"), file);        MultipartBody.Builder builder = new MultipartBody.Builder();        builder.addFormDataPart("file", file.getName(), requestBody);        builder.addFormDataPart("uid", uid);        builder.addFormDataPart("token", token);        builder.setType(MultipartBody.FORM);        MultipartBody multipartBody = builder.build();        Observable<Response<String>> uploadUserImage = create(TestApi.class).uploadUserImage(multipartBody);        return uploadUserImage.compose(this.<String>applySchedulers());    }

0 0