前言:
不算是一个很难的问题,但是很基础。
贴代码
public void putPic(String key, List<String> values) {
for (int i = 0; i < values.size(); i++) {
File file = new File(values.get(i));
RequestBody requestBody;
if (file.getName().endsWith("jpg")) {
requestBody = RequestBody.create(MediaType.parse("image/jpg"), file);
map.put(key + "[" + i + "]" + "\";filename=\"" + file.getName(), requestBody);
} else if (file.getName().endsWith("png")) {
requestBody = RequestBody.create(MediaType.parse("image/png"), file);
map.put(key + "[" + i + "]" + "\";filename=\"" + file.getName(), requestBody);
} else {
showErrorTip();
}
}
}
其实,乍一看是没有问题的,而且图片确实能传上去,但是有个很细微的问题,图片是乱续的,如果不仔细看,觉得无法下手,但其实这涉及到一个很基础的只是,map是无序的,那么在传图片的时候后台接收到的也是无序的。
解决方法:
第一种:
在我写的Rxjava 和 Retrofit 的组合使用实践中,我提供了一个List上传的代码,List是有序的
第二种:
还是使用map传,但是使用的是TreeMap,这个是有序的,自定义一个比较器,这个很简单,就不说了。