//图片集合
List<String> imgs = new ArrayList<>();
//压缩后的图片路径集合
List<String> tmpImgs = new ArrayList<>();
Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
//TODO 收到消息后调用网络请求上传
}
};
public void compressImages() {
new Thread(new Runnable() {
@Override
public void run() {
for (String path : imgs) {
//TODO 调用压缩图片的方法,压缩后保存在一个临时文件夹中
tmpImgs.add("压缩后路径");
}
mHandler.sendEmptyMessage(0);
}
}).start();
}
@Multipart
@POST("your address")
Observable<String> uploadImgs(@PartMap Map<String, RequestBody> map, @Part("imgs") MultipartBody body);
//先定义一个请求接口,除了图片可能还有其他一些参数需要上传,所以还定义了个map。接下来开始正文:
public void upload() {
final Map<String, RequestBody> map = new HashMap<>();
map.put("userId", RequestBody.create(MediaType.parse("form-data"),"1");
final MultipartBody.Builder builder = new MultipartBody.Builder();
Observable.from(imgs)
.map(new Func1<String, String>() {
@Override
public String call(String path) {
//调用图片压缩,返回压缩后路径tmp_path
//注意,Filedata是后台给你的对应的字段
builder.addFormDataPart("Filedata", "avatar.png", RequestBody.create(MultipartBody.FORM, new File(tmp_path)));
return path;
}
}).last()
.flatMap(new Func1<String, Observable<String>>() {
@Override
public Observable<String> call(String path) {
return apiService.uploadImgs(map, builder.build());
}
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<String>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
//错误处理
}
@Override
public void onNext(String res) {
//成功后处理
}
});
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有