利用的是递归的方法 :
我用的开源上传图片,然后 在回调的方法中, 把图片的本地路径保存在了一个集合中,然后拿到集合里的第一个元素,进行网络请求 ; 在网络请求的成功回调中,我继续递归调用,网络请求的自定义方法,然后把count++,上传 第二个图片的路径;这样直到count==集合最大值,那么图片就上传完毕了;
private GalleryFinal.OnHanlderResultCallback mOnHanlderResultCallback = new GalleryFinal.OnHanlderResultCallback() {
@Override
public void onHanlderSuccess(int reqeustCode, List<PhotoInfo> resultList) {
if (resultList != null) {
//如果有从新选择了,我们把当前界面的显示图片,都清空了,要他选择的
disposeData();
mPhotoList.clear();
select_pic.clear();//不能清空了,保留
mPhotoList.addAll(resultList);
/** 由于,返回显示勾选状态 ,他带回来的比如 3个图片,有可能都是已经选择过的了,也许会比现在少,也会比现在集合里的多 */
img_take_pic.setImageResource(R.drawable.camera_press);
for (PhotoInfo photoInfo : resultList) {
// 算出,那些事新添加了,显示出来
select_pic.add(photoInfo.getPhotoPath());
}
if (null !=select_pic && select_pic.size()>0) {
tempCount=mPhotoList.size();
BitmapUtils.compressBitmapNotSaveAlbum(select_pic.get(0), activity);
downloadPath(select_pic.get(0),Constants.ContentType.image, null,0);
}
}
}
网络请求
private void downloadPath(final String filePath, final String type,String videoImagePath, final int cont) {
RequestParams params=new RequestParams();
try {
params.put("enclosure", new File(filePath)); //都是 用这一个key
if(videoImagePath!=null){
params.put("enclosureImage", new File(videoImagePath));
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
HttpClient.postUpload(URL.CreateShiShi.enclosure, params, activity, new HttpListener<ResponseResult>() {
@Override
public void handMessage(ResponseResult obj) {
if(obj!=null){
if(Constants.HttpResponseStatus.success.equals(obj.getCode())){
try {
ToastHelper.showToast(activity, "已上传完附件 "+(cont+1)+" 个");
count=cont+1;
/** 只有图片会一下选择 多个 */
if (tempCount > count) {//如果小于总数就继续下载
BitmapUtils.compressBitmapNotSaveAlbum(select_pic.get(count), activity);
downloadPath(select_pic.get(count),type, null,count);
}else{
//如果附件上传完, 那么 变量归0
count=0;
tempCount=0;
}
} catch (Exception e) {
e.printStackTrace();
}
}else{
ToastHelper.shortShow(activity, obj.getMsg());
}
}
}
});
}
暂时没有考虑如果没有网络,会怎么办!