四、上传反馈信息
场景描述:
首先上传用户图片,图片上传完成后把服务端返回的图片地址和反馈内容上传到服务器。
问题分析:
此问题可以分为三个数据流 1.上传单张图片 2.上传所有图片 3.上传图片地址和反馈内容
伪代码实现:
//上传单张图片
public Observable<String> uploadImage(String path) {
return null;
}
//上传所有图片
public Observable<List<String>> uploadImages(List<String> paths) {
List<Observable<String>> observables = new ArrayList<>();
for (String path : paths) {
observables.add(uploadImage(path));
}
return Observable.concat(observables).toList().toObservable();
}
//组合图片和内容
public Observable<String> zipContent(Observable<List<String>> imageObservable, Observable<String> content) {
return Observable.zip(imageObservable, content, new BiFunction<List<String>, String, HashMap<String, String>>() {
@Override
public HashMap<String, String> apply(List<String> strings, String s) throws Exception {
HashMap<String, String> values = new HashMap<>();
values.put("images", TextUtils.join(",", strings));
values.put("content", s);
return values;
}
}).flatMap(new Function<HashMap<String, String>, ObservableSource<String>>() {
@Override
public ObservableSource<String> apply(HashMap<String, String> stringStringHashMap) throws Exception {
return feedback(stringStringHashMap);
}
});
}
//上传最终数据到服务器
private ObservableSource<String> feedback(HashMap<String, String> values) {
return null;
}
网友评论