asynchttpClient框架关于多文件批量上传的问题,改用xUtil
RequestParams params = new RequestParams();
params.add("ordernum",ordernum);
params.add("username",username);
for(int i=0; i<filesList.size();i++){
try {
params.put("images[" + i + "]",filesList.get(i),"application/octet-stream");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
Log.i(MyConfig.TagPic,"打印准备上传的图片资料流:"+filesList.get(i).getPath());
}
MyBaseClient.post(MyConfig.urlDataUpload,params,new AsyncHttpResponseHandler(){
@Override
public void onStart() {
super.onStart();
} @Override
public void onProgress(int bytesWritten, int totalSize) {
super.onProgress(bytesWritten, totalSize);
int count = (int) ((bytesWritten * 1.0 / totalSize) * 100);
// 上传进度显示
progressBar.setProgress(count);
tv_progress.setText("正在上传资料....."+count+"%");
Log.i("上传 Progress>>>>>", "count="+count+"--"+bytesWritten + " / " + totalSize);
} @Override
public void onSuccess(int statusCode, String content) {
super.onSuccess(statusCode, content);
Log.i("main","成功了");
mDialog.dismiss(); } @Override
public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
super.onFailure(statusCode, headers, responseBody, error);
mDialog.dismiss();
}
});
最近使用asynchttpClient提交表单上传图片,发现存在上传多张图片,会少上传一两张的情况,貌似是这框架的BUG;
改用xUtil可以成功上传;
String ordernum = model.getOrdernum();
String username = model.getUsername();
RequestParams params = new RequestParams();
params.addBodyParameter("ordernum",ordernum);
params.addBodyParameter("username",username);
for(int i=0; i<filesList.size();i++){
params.addBodyParameter("images[" + i + "]",filesList.get(i));
Log.i(MyConfig.TagPic,"打印准备上传的图片资料流:"+filesList.get(i).getPath());
}
HttpUtils http = new HttpUtils();
http.send(HttpRequest.HttpMethod.POST, MyConfig.urlDataUpload, params,
new RequestCallBack<String>() { @Override
public void onSuccess(ResponseInfo<String> responseInfo) {
Log.i("main","当前结果:"+responseInfo.result);
mDialog.dismiss();
netTask();
isUpload = false;
hasCompress = false;
mSelectPath.clear();
filesList.clear();
mHashMapCompress.clear();
adapter.notifyDataSetChanged();
tv_right_submit.setEnabled(true);
//删除手机下面的小图片
if(!MyConfig.OpenDebugging){
FileUtil.deleteFileDir(MyConfig.PicFileSmallDir,false);
}
} @Override
public void onLoading(long total, long current, boolean isUploading) {
super.onLoading(total, current, isUploading);
int count = (int) ((current * 1.0 / total) * 100);
// 上传进度显示
progressBar.setProgress(count);
tv_progress.setText("正在上传资料....."+count+"%");
Log.i("上传 Progress>>>>>", "count="+count+"--"+current + " / " + total);
} @Override
public void onFailure(HttpException e, String s) {
mDialog.dismiss();
}
});
附:thinkphp接口:
//上传资料
public function upload()
{
$config = array(
//'rootPath' => 'E:/phpStudy/www/yne_siteM/uploads/scan/'.'file/',
'rootPath' => 'D:/www/yne_siteM/uploads/scan/'.'file/',
);
$upload = new \Think\Upload($config);
// 实例化上传类
$upload->maxSize = 3145728 ;// 设置附件上传大小
$upload->exts = array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类型
$upload->savePath = 'imgs'; // 设置附件上传(子)目录
// 上传文件
$info = $upload->upload();
if(!$info) {// 上传错误提示错误信息
$this->error($upload->getError());
}else{
// 上传成功 获取上传文件信息
foreach($info as $file){
echo $file['savepath'].$file['savename']; $db = M('order');
$data['materialurl'] = 'uploads/scan/file/'.$file['savepath'].$file['savename'];
$where['username'] = $_POST['username'];
$where['ordernum'] = $_POST['ordernum'];
$da = $db->field('materialurl')->where($where)->select();
if($da){
$datas['materialurl'] = $da[0]['materialurl'].'|'.$data['materialurl'];
$tis = $db->where($where)->save($datas);
}else{
$tis = $db->where($where)->save($data);
}
}
}
/*$db1 = M('order');
$d = $db1->field('materialurl')->where($where)->select();*/
if($tis){
$response['status'] = 'Y';
$response['msg'] = '成功';
$response['data'] = $tis;
echo json_encode($response);
}else{
$response['status'] = 'N';
$response['msg'] = '失败';
echo json_encode($response);
}
// $this->ajaxReturn(true); // "file"名字必须和iOS客户端上传的name一致
/*if (($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/png")
|| ($_FILES["file"]["type"] == "imagepeg"))
{
if ($_FILES["file"]["error"] > 0) {
echo $_FILES["file"]["error"]; // 错误代码
} else {
$fillname = $_FILES['file']['name']; // 得到文件全名
$dotArray = explode('.', $fillname); // 以.分割字符串,得到数组
$type = end($dotArray); // 得到最后一个元素:文件后缀 $path = "E:/phpStudy/www/yne_siteM/uploads/scan/".md5(uniqid(rand())).'.'.$type; // 产生随机唯一的名字 move_uploaded_file( // 从临时目录复制到目标目录
$_FILES["file"]["tmp_name"],$path);
echo "成功";
}
} else {
echo "文件类型不正确";
}*/
}
asynchttpClient框架关于多文件批量上传的问题,改用xUtil的更多相关文章
- 文件批量上传-统一附件管理器-在线预览文件(有互联网和没有两种)--SNF快速开发平台3.0
实际上在SNF里使用附件管理是非常简单的事情,一句代码就可以搞定.但我也要在这里记录一下统一附件管理器能满足的需求. 通用的附件管理,不要重复开发,调用尽量简洁. 批量文件上传,并对每个文件大小限制, ...
- SpringMVC+Ajax实现文件批量上传和下载功能实例代码
需求: 文件批量上传,支持断点续传. 文件批量下载,支持断点续传. 使用JS能够实现批量下载,能够提供接口从指定url中下载文件并保存在本地指定路径中. 服务器不需要打包. 支持大文件断点下载.比如下 ...
- 带进度条的文件批量上传插件uploadify
有时项目中需要一个文件批量上传功能时,个人认为uploadify是快速简便的解决方案. 先上效果图: 一. 下载uploadify 从官网下载uploadify的Flash版本(Flash版本免费,另 ...
- 文件批量上传的工具,要实现暂停继续、断点续传等功能(使用QtNetwork和QHttpMultiPart,和定时器检查超时)
最近在做一个文件批量上传的工具,要实现暂停继续.断点续传等功能.利用Qt自带的QtNetwork模块,完成这些需求并没有费多少周章,主要思路就是将文件分块,然后用while循环依次传输.具体实现代码比 ...
- 使用WebUploader实现文件批量上传,进度条显示功能
知识点:利用WebUploader,实现文件批量上传,并且实时显示文件的上传进度 参考官方文档:http://fex.baidu.com/webuploader/ (1)引入三个资源 JS,CSS,S ...
- jquery文件批量上传控件Uploadify3.2(java springMVC)
人比較懒 有用为主 不怎么排版了 先放上Uploadify的官网链接:http://www.uploadify.com/ -->里面能够看到PHP的演示样例,属性说明,以及控件下载地址.分f ...
- 利用uploadify+asp.net 实现大文件批量上传。
前言 现在网上文件上传组件随便一搜都是一大堆,不过看大家一般都在用uploadify这个来上传文件.由于项目需要,我在来试了一下.因为第一次使用,也遇到了很多问题,特此记录! ------------ ...
- uploadify文件批量上传
uploadify能够时间文件的批量上传,JS文件包下载地址,使用说明可以参考官网文档(http://www.uploadify.com/documentation/) 使用方法如下代码: $(&qu ...
- 关于在Struts2框架下实现文件的上传功能
struts2的配置过程 (1)在项目中加入jar包 (2)web.xml中filter(过滤器)的配置 <?xml version="1.0" encoding=" ...
随机推荐
- php 正则获取html属性值
个人不会写正则,但是工作中遇到了又没办法,所以记录下以后再遇到就好找了,呵呵 言归正传,下面是用正则匹配img的属性的方法: 1.匹配 “img” 中的 “src” 属性 $str='<img ...
- 存在网路的情况下重命名SDE中数据图层错误(The orphan junction feature class cannot be renamed)
运行环境为ArcGIS9.3,VS2008. 问题描述:数据通过SDE存储在Oracle10g数据库中,数据集中存在几何网络,在存在网络的情况下通过程序对其中的数据图层进行重命名,弹出"Th ...
- 20145225《Java程序设计》 第7周学习总结
20145225<Java程序设计> 第7周学习总结 教材学习内容总结 第十三章 时间与日期 13.1认识时间与日期 时间的度量:GMT.UT.TAI.UTC.Unix.epoch. 年历 ...
- QEMU中smp,socket,cores,threads几个参数的理解
在用QEMU创建KVM guest的时候,为了指定guest cpu资源,用到了-smp, -sockets, -cores, -threads几个参数, #/usr/bin/qemu-system- ...
- Ubuntu终端Terminal常用快捷键
快捷键 功能 Tab 自动补全 Ctrl+a 光标移动到开始位置 Ctrl+e 光标移动到最末尾 Ctrl+k 删除此处至末尾的所有内容 Ctrl+u 删除此处至开始的所有内容 Ctrl+d 删除当前 ...
- C#压缩文件 不压缩路径
我想把 E:\\AA\BB\11.txt 压缩后存入 E:\\AA1\BB1\11.rar 但是当我解压( E:\\AA1\BB1\11.rar)的时候,发现:11.txt 不是在 E:\\AA1\B ...
- linux ps命令
名称:ps 使用权限:所有使用者 使用方式:ps [options] [--help] 说明:显示瞬间行程 (process) 的动态 参数: ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍 ...
- nginx 版本介绍
Nginx官网提供了三个类型的版本Mainline version:Mainline 是 Nginx 目前主力在做的版本,可以说是开发版Stable version:最新稳定版,生产环境上建议使用的版 ...
- 2014 New Year’s First Blog
新年开篇博客,依旧是流水账. 读到一篇强文,<关于两个世界体系的对话>.common practice 往往是针对某种语言或者特定技术为背景,然而,很多时候,common practice ...
- 第37讲:List的foldLeft、foldRight、sort操作代码实战
其实flodLeft和foldRight就是折叠操作,我让们看下下列的函数 折叠操作 def sum(xs:List[Int]):Int = ( 0 /: xs)(_ +_) def p ...