Android Retrofit上传七牛云及修改头像

Retrofit上传图片七牛云

首先我们要在我们的使用我们的Retrofit中的@Multipart @Part方法上传

 @POST("wap/Qn/upload")
    @Multipart
    Observable<QiNiuYun> getQny(@Part("FunName") RequestBody funName, @Part("path") RequestBody path, @Part("appfile") RequestBody appfile, @Part MultipartBody.Part file);

上传时我们需要将我们的照片也就是图片需要转换成一个file文件的格式

RequestBody funName = RequestBody.create(null, "ict_uploadpicture");
RequestBody path1 = RequestBody.create(null, "/uploadNews");
String pat = pat;	//pat是我们的图片路径
File file = new File(pat); //然后通过new File的方式将我们的路径转为File文件格式
RequestBody appfile = RequestBody.create(null, pat);//然后通过RequestBody将我们的图片路径给放入到body请求体中
RequestBody requestFile = RequestBody.create(MediaType.parse("image/*"), file);//通过 RequestBody.create(MediaType.Parse("image/*")方法是一个寻找图片的路径格式然后将我们的file存放进去
MultipartBody.Part body = MultipartBody.Part.createFormData("file", pat, requestFile); 

然后依次传入我们的参数进行上传

NetUtils.getInstance().getApi().getQny(funName, path1, appfile, body)
                            .subscribeOn(Schedulers.io())
                            .observeOn(AndroidSchedulers.mainThread())
                            .subscribe(new Observer<QiNiuYun>() {
    
    
                                @Override
                                public void onSubscribe(Disposable d) {
    
    

                                }

                                @Override
                                public void onNext(QiNiuYun qiNiuYun) {
    
    
                                 //拿到接口请求的回调方法
                                }

                                @Override
                                public void onError(Throwable e) {
    
    
                               //如果上传失败时可以将我们的错误信息打印出
                                }

                                @Override
                                public void onComplete() {
    
    

                                }
                            });

上传头像也是一样的道理

 @Multipart
    @POST("wap/User/editAvatar")
    Observable<UploadPictures> upImg(@Part("token") RequestBody token, @Part("FunName") RequestBody funName, @Part("path") RequestBody path, @Part("appfile") RequestBody appfile, @Part MultipartBody.Part file);

一定要按照参数顺序来编写我们的mvc或者mvp传参

    RequestBody requestBody = RequestBody.create(MediaType.parse("multipart/form-data"), token1);

剩下的跟上传七牛云的步骤是一摸一样

猜你喜欢

转载自blog.csdn.net/weixin_47139560/article/details/115075521