最近一直在用Retrofit+rxjava 请求网络,感觉很方便,在图片上传的这块我遇到了问题,查看了好多网友写的大致分两种:一种我没上传成功 另一种上传成功了,我在这简单列了下我的情况:我直接上代码:
第一种:
//接口:
@Multipart
@POST(Api.UPDATAFILE)
Observable<String> updataFile(@Part("member_id") RequestBody member_id, @Part("pic\"; filename=\"avatar.png\"") RequestBody file)
//我的情况是混合传递,文件加文字类型 ("pic\"; filename=\"avatar.png\"") RequestBody file):pic是字段名,上传的文件名称为avatar.png,以RequestBody 形式上传
//方法:
//创建requestBody 对象
RequestBody requestBody = RequestBody.create(MediaType.parse("image/*"), path)
//创建member_id对象
RequestBody member_id=RequestBody.create(MediaType.parse("text/plain"),Constant.USERMEMBERID)
MyApplication.getHttpHelper().provideAPIRequest()
.updataFile(member_id,requestBody)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<String>() {}
这种方法我没上传成功 欢迎指点
第二种方法:
//接口
@Multipart
@POST(Api.UPDATAFILE)
Observable<String> updataFile(@Part("member_id") RequestBody member_id, @Part MultipartBody.Part pic)
//方法:
File file = new File(imagePath)
RequestBody photoRequestBody = RequestBody.create(MediaType.parse("image/png"), file)
MultipartBody.Part photo = MultipartBody.Part.createFormData("pic", file.getName(), photoRequestBody)
RequestBody member_id = RequestBody.create(MediaType.parse("text/plain"), Constant.USERMEMBERID)
MyApplication.getHttpHelper().provideAPIRequest()
.updataFile(member_id, photo)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<String>() {}
//这种方法上传成功了
由于匆忙 没有研究 草草的记下,方便使用