asynchttpClient框架关于多文件批量上传的问题,改用xUtil

 1 RequestParams params = new RequestParams();
 2         params.add("ordernum",ordernum);
 3         params.add("username",username);
 4         for(int i=0; i<filesList.size();i++){
 5             try {
 6                 params.put("images[" + i + "]",filesList.get(i),"application/octet-stream");
 7             } catch (FileNotFoundException e) {
 8                 e.printStackTrace();
 9             }
10             Log.i(MyConfig.TagPic,"打印准备上传的图片资料流:"+filesList.get(i).getPath());
11         }
12         MyBaseClient.post(MyConfig.urlDataUpload,params,new AsyncHttpResponseHandler(){
13             @Override
14             public void onStart() {
15                 super.onStart();
16             }
17
18             @Override
19             public void onProgress(int bytesWritten, int totalSize) {
20                 super.onProgress(bytesWritten, totalSize);
21                 int count = (int) ((bytesWritten * 1.0 / totalSize) * 100);
22                 // 上传进度显示
23                 progressBar.setProgress(count);
24                 tv_progress.setText("正在上传资料....."+count+"%");
25                 Log.i("上传 Progress>>>>>", "count="+count+"--"+bytesWritten + " / " + totalSize);
26             }
27
28             @Override
29             public void onSuccess(int statusCode, String content) {
30                 super.onSuccess(statusCode, content);
31                 Log.i("main","成功了");
32                 mDialog.dismiss();
33
34             }
35
36             @Override
37             public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
38                 super.onFailure(statusCode, headers, responseBody, error);
39                 mDialog.dismiss();
40             }
41         });

最近使用asynchttpClient提交表单上传图片,发现存在上传多张图片,会少上传一两张的情况,貌似是这框架的BUG;

改用xUtil可以成功上传;

 1 String ordernum = model.getOrdernum();
 2         String username = model.getUsername();
 3         RequestParams params = new RequestParams();
 4         params.addBodyParameter("ordernum",ordernum);
 5         params.addBodyParameter("username",username);
 6         for(int i=0; i<filesList.size();i++){
 7             params.addBodyParameter("images[" + i + "]",filesList.get(i));
 8             Log.i(MyConfig.TagPic,"打印准备上传的图片资料流:"+filesList.get(i).getPath());
 9         }
10         HttpUtils http = new HttpUtils();
11         http.send(HttpRequest.HttpMethod.POST, MyConfig.urlDataUpload, params,
12                 new RequestCallBack<String>() {
13
14                     @Override
15                     public void onSuccess(ResponseInfo<String> responseInfo) {
16                         Log.i("main","当前结果:"+responseInfo.result);
17                         mDialog.dismiss();
18                         netTask();
19                         isUpload = false;
20                         hasCompress = false;
21                         mSelectPath.clear();
22                         filesList.clear();
23                         mHashMapCompress.clear();
24                         adapter.notifyDataSetChanged();
25                         tv_right_submit.setEnabled(true);
26                         //删除手机下面的小图片
27                         if(!MyConfig.OpenDebugging){
28                             FileUtil.deleteFileDir(MyConfig.PicFileSmallDir,false);
29                         }
30                     }
31
32                     @Override
33                     public void onLoading(long total, long current, boolean isUploading) {
34                         super.onLoading(total, current, isUploading);
35                         int count = (int) ((current * 1.0 / total) * 100);
36                         // 上传进度显示
37                         progressBar.setProgress(count);
38                         tv_progress.setText("正在上传资料....."+count+"%");
39                         Log.i("上传 Progress>>>>>", "count="+count+"--"+current + " / " + total);
40                     }
41
42                     @Override
43                     public void onFailure(HttpException e, String s) {
44                         mDialog.dismiss();
45                     }
46                 });

附:thinkphp接口:

 1 //上传资料
 2     public function upload()
 3     {
 4         $config = array(
 5             //‘rootPath‘ => ‘E:/phpStudy/www/yne_siteM/uploads/scan/‘.‘file/‘,
 6             ‘rootPath‘ => ‘D:/www/yne_siteM/uploads/scan/‘.‘file/‘,
 7         );
 8         $upload = new \Think\Upload($config);
 9         // 实例化上传类
10         $upload->maxSize   =     3145728 ;// 设置附件上传大小
11         $upload->exts      =     array(‘jpg‘, ‘gif‘, ‘png‘, ‘jpeg‘);// 设置附件上传类型
12         $upload->savePath  =     ‘imgs‘; // 设置附件上传(子)目录
13         // 上传文件
14         $info = $upload->upload();
15         if(!$info) {// 上传错误提示错误信息
16             $this->error($upload->getError());
17         }else{
18             // 上传成功 获取上传文件信息
19             foreach($info as $file){
20                 echo $file[‘savepath‘].$file[‘savename‘];
21
22                 $db = M(‘order‘);
23                 $data[‘materialurl‘] = ‘uploads/scan/file/‘.$file[‘savepath‘].$file[‘savename‘];
24                 $where[‘username‘] = $_POST[‘username‘];
25                 $where[‘ordernum‘] = $_POST[‘ordernum‘];
26                 $da = $db->field(‘materialurl‘)->where($where)->select();
27                 if($da){
28                     $datas[‘materialurl‘] = $da[0][‘materialurl‘].‘|‘.$data[‘materialurl‘];
29                     $tis = $db->where($where)->save($datas);
30                 }else{
31                     $tis = $db->where($where)->save($data);
32                 }
33             }
34         }
35         /*$db1 = M(‘order‘);
36         $d = $db1->field(‘materialurl‘)->where($where)->select();*/
37         if($tis){
38             $response[‘status‘] = ‘Y‘;
39             $response[‘msg‘] = ‘成功‘;
40             $response[‘data‘] = $tis;
41             echo json_encode($response);
42         }else{
43             $response[‘status‘] = ‘N‘;
44             $response[‘msg‘] = ‘失败‘;
45             echo json_encode($response);
46         }
47         //    $this->ajaxReturn(true);
48
49         // "file"名字必须和iOS客户端上传的name一致
50         /*if (($_FILES["file"]["type"] == "image/gif")
51             || ($_FILES["file"]["type"] == "image/jpeg")
52             || ($_FILES["file"]["type"] == "image/png")
53             || ($_FILES["file"]["type"] == "imagepeg"))
54         {
55             if ($_FILES["file"]["error"] > 0) {
56                 echo $_FILES["file"]["error"]; // 错误代码
57             } else {
58                 $fillname = $_FILES[‘file‘][‘name‘]; // 得到文件全名
59                 $dotArray = explode(‘.‘, $fillname); // 以.分割字符串,得到数组
60                 $type = end($dotArray); // 得到最后一个元素:文件后缀
61
62                 $path = "E:/phpStudy/www/yne_siteM/uploads/scan/".md5(uniqid(rand())).‘.‘.$type; // 产生随机唯一的名字
63
64                 move_uploaded_file( // 从临时目录复制到目标目录
65                     $_FILES["file"]["tmp_name"],$path);
66                 echo "成功";
67             }
68         } else {
69             echo "文件类型不正确";
70         }*/
71     }
时间: 2024-10-10 08:26:44

asynchttpClient框架关于多文件批量上传的问题,改用xUtil的相关文章

jquery文件批量上传控件Uploadify3.2(java springMVC)

人比較懒  有用为主 不怎么排版了 先放上Uploadify的官网链接:http://www.uploadify.com/  -->里面能够看到PHP的演示样例,属性说明,以及控件下载地址.分flash版(免费)和html5版(收费). 官网上能够看到效果演示. 另外在网上找到了一份Uploadify3.2的中文API文档.能够在我上传的资源里面下载. 以下就是一个基于springMVC的文件上传演示样例,看起来可能比文档更直观一些··· 1.下载插件放到项目中 2.在jsp页面中引入下面JS和

带进度条的文件批量上传插件uploadify

有时项目中需要一个文件批量上传功能时,个人认为uploadify是快速简便的解决方案. 先上效果图: 一. 下载uploadify 从官网下载uploadify的Flash版本(Flash版本免费,另一版本HTML5版本需要付费) 下载地址: http://www.uploadify.com/download/ 下载后直接把文件解压,然后放在项目中 二. 在项目中使用 在页面中引入: <!--引入Jquery--> <script src="js/jquery-1.11.3.m

SNF快速开发平台3.0之--文件批量上传-统一附件管理器-在线预览文件(有互联网和没有两种)

实际上在SNF里使用附件管理是非常简单的事情,一句代码就可以搞定.但我也要在这里记录一下统一附件管理器能满足的需求. 通用的附件管理,不要重复开发,调用尽量简洁. 批量文件上传,并对每个文件大小限制,客户端无刷新 可以对已经上传的附件进行名字变更,改成更友好的名称. 可以对已经上传的文件进行删除. 并记录文件大小,上传人.时间和修改人和时间等. 可以下载附件到本地电脑. 文件的在线预览,支持不安装office软件就可以预览(不管是图片还是office文档都得支持预览) 虽然比专业的图文档管理系统

七牛文件批量上传之自定义NSOperation

前言: 前阵子遇到七牛文件批量上传的问题,尝试了几种方案,现分享一种目前采用的方案--自定义operation. 为什么要自己实现七牛文件的批量上传 在使用七牛云存储服务的过程中,想要在手机客户端进行图片.视频等文件的上传,只需要直接引入SDK,然后使用QiniuSDK即可.对于iOS端的上传特别简单,只需要使用pod引入SDK: pod "Qiniu", "~> 7.0" 然后 #import <QiniuSDK.h> ... NSString

[Pulgin] 利用swfupload实现java文件批量上传

URL:http://blog.csdn.net/xuweilinjijis/article/details/8876305 之前在网上找过很多相关资料,很多所谓的批量上传都是忽悠人的,真正的批量上传指的是 用户一次性可以选择多个文件,然后上传是将所有选取的文件上传到服务器.java中真正可以实现批量上传的技术大致有两种:一种是通过flash:一种是 通过applet:不过html5也可以支持批量拖选.两种方式有各自的优缺点,其中flash对于浏览器兼容性较好,基本可以满足市面上大众浏览器,缺

如何开发一个java开源框架-----Jvn框架之实现文件的上传以及方法封装(第六讲)八哥实力讲解

前言 一 . 博主正在教大家如何开发一个javaEE框架(Jvn框架),博客里有完整的开发视频,每一篇博文都是一个知识点,帮助大家理解框架: 博客首页:http://www.cnblogs.com/everxs/ 本次内容视频以及源码下载地址:http://pan.baidu.com/s/1pJsoGDd 1,为什么要使用java的框架,以及框架能带来什么好处.  2,帮助你们理解框架的原理. 3,框架是如何实现的.                                        

利用uploadify+asp.net 实现大文件批量上传。

前言 现在网上文件上传组件随便一搜都是一大堆,不过看大家一般都在用uploadify这个来上传文件.由于项目需要,我在来试了一下.因为第一次使用,也遇到了很多问题,特此记录! ----------------------------------我是分割线---------------------------------我是分割线--------------------------------------------------- 效果图: 启用批量上传开关 大文件上传时的webconfig配置

JavaWeb框架_Struts2_(七)-----&gt;文件的上传和下载

这个章节是Struts2框架应用最广泛的三个版块(上传下载.国际化.校验输入)之一,所以这一版块的学习还蛮重要的. 1. 章节目录 Struts2文件上传 单文件上传 拦截器实现文件过滤 文件上传常量配置 Struts2多文件上传 Struts2文件下载 2.  具体内容 2.1Struts2文件上传 2.1.1单文件上传 本小节通过一个示例讲解Struts2如何实现单文件的上传. (1) 先写一个选择上传单文件页面(select.jsp) <%@ taglib prefix="s&quo

ASP.NET MVC WebAPI实现文件批量上传

工作中学习,学习中记录~~~~~~ 最下面附上demo 任务需求:需要做一个apI接口让C#的程序调用实现批量文件的上传. 难度: 没有做过通过API上传文件的...之前做过网站前后台上传. 首先当然是百度...没人教就自己百度学习学习,大佬还是多.环境还是好. 先了解WEBAPI,然后了解如何上传文件,最后实现批量上传~~~~ 不会的按照上面步骤遨游百度....我直接上代码,也许写的不咋地,但是先记录下来后续自己继续学习~~~~~~~ 首先WEBAPI部分: WInfrom部分 最后附上dem