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);
剩下的跟上传七牛云的步骤是一摸一样