Android 批量上传sd卡图片
最近手头上需要批量上传一些保存到SD卡图片由于简单,过于忘记,写在博客中吧!同时也希望能帮到大家!
一 、 以下是一个Service类
package cn.com.service;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.multipart.FilePart;
import org.apache.commons.httpclient.methods.multipart.MultipartRequestEntity;
import org.apache.commons.httpclient.methods.multipart.Part;
import org.apache.commons.httpclient.methods.multipart.StringPart;
import android.util.Log;
/**
* 批量上传服务类
* @author ChonZY
*
*/
public class DataService {
/**
* 批量上传图片
* @param path 服务器地址
* @param name 用户名
* @param filePath sd卡图片路径
* @return
* @throws Exception
*/
public static String sendDataByHttpClientPost(String path ,String name,List<File> filePath)throws Exception{
List<Part> partList = new ArrayList<Part>();
partList.add(new StringPart("user", name));
partList.add(new StringPart("picnumber", "4"));
for (int i = 0; i < filePath.size(); i++) {
String picPath = filePath.get(i).getPath();
Log.i("Other", "服务类 图片路径Service _ PicPath ="+picPath);
partList.add(new FilePart("file", new File(filePath.get(i).getPath())));
}
// 实例化上传数据的数组
// Part [] parts = {new StringPart("user", name),new FilePart("file", new File(filePath))};
Part[] parts = partList.toArray(new Part[0]);
Log.i("Other","new Part[0] _size:"+ parts.length);
PostMethod filePost = new PostMethod(path);
filePost.setRequestEntity(new MultipartRequestEntity(parts, filePost.getParams()));
org.apache.commons.httpclient.HttpClient client = new org.apache.commons.httpclient.HttpClient();
client.getHttpConnectionManager().getParams().setConnectionTimeout(5000);
int status = client.executeMethod(filePost);
Log.i("Other", "返回结果:"+status);
if(status == 200){
System.out.println( filePost.getResponseCharSet());
String result = new String(filePost.getResponseBodyAsString());
System.out.println("--"+result);
return result;
}else{
throw new IllegalStateException("服务器状态异常");
}
}
/**
* 单次上传图片or文件
* @param path
* @param name
* @param filePath
* @return
* @throws Exception
*/
public static String sendDataByHttpClientPost(String path ,String name,String filePath)throws Exception{
/*List<Part> partList = new ArrayList<Part>();
partList.add(new StringPart("user", name));
for (int i = 0; i < 4; i++) {
partList.add(new FilePart(name, FilePart()));
}*/
// 实例化上传数据的数组
Part [] parts = {new StringPart("user", name),new FilePart("file", new File(filePath))};
PostMethod filePost = new PostMethod(path);
filePost.setRequestEntity(new MultipartRequestEntity(parts, filePost.getParams()));
org.apache.commons.httpclient.HttpClient client = new org.apache.commons.httpclient.HttpClient();
client.getHttpConnectionManager().getParams().setConnectionTimeout(5000);
int status = client.executeMethod(filePost);
Log.i("Other", "返回结果:"+status);
if(status == 200){
System.out.println( filePost.getResponseCharSet());
String result = new String(filePost.getResponseBodyAsString());
System.out.println("--"+result);
return result;
}else{
throw new IllegalStateException("服务器状态异常");
}
}
}
----------------------------------------------------------------------------------------------------------
二、 以下是Activity中调用Service类的方法,进行批量上传图片
/**
* 批量上传图片
*/
private void filePostForSDPic() {
new Thread(){
public void run() {
try {
saveDir = Environment.getExternalStorageDirectory()+ "/chonPic";
String filePath = saveDir;
String path = "http://这里的路径就不贴上去了,保证成功并万无一失";
String result = DataService.sendDataByHttpClientPost(path, "admin", fileList);
Toast.makeText(MainActivity.this,"pic_haha:"+ result, 0).show();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
};
}.start();
}
---------------------------------------------------------------------------------------
调用批量上传方法需要引入阿帕奇3 个jar包
1. commons-codec-1.3.jar
2. commons-httpclient-3.1.jar
3. commons-logging-1.1.jar
大家可以去网上下载,也可以去我的博客的资源下载!
Android 批量上传sd卡图片的更多相关文章
- TP3.2批量上传文件(图片),解决同名冲突问题
1.html <form action="{:U('Upload/index')}" enctype="multipart/form-data" meth ...
- C# 结合html5 批量上传文件和图片预览
html5 新特性 <input id="imgsf" type="file" name="imgsf" multiple /> ...
- 使用KindEditor富文本编辑器,点击批量上传按钮没有选择图片按钮
问题:批量上传没有选择图片按钮
- 利用WebUploader进行图片批量上传,在页面显示后选择多张图片压缩至指定路径【java】
WebUploader是由Baidu WebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现代文件上传组件.在现代的浏览器里面能充分发挥HTML5的优势,同时又不摒弃主流IE浏览 ...
- Mvc利用淘宝Kissy uploader实现图片批量上传附带瀑布流的照片墙
前言 KISSY 是由阿里集团前端工程师们发起创建的一个开源 JS 框架.它具备模块化.高扩展性.组件齐全,接口一致.自主开发.适合多种应用场景等特性.本人在一次项目中层使用这个uploader组件. ...
- KindEditor图片批量上传
KindEditor编辑器图片批量上传采用了上传插件swfupload.swf,所以后台上传文件方法返回格式应为JSONObject的String格式(注). JSONObject格式: JSONOb ...
- OneThink实现多图片批量上传功能
OneThink原生系统中的图片上传功能是uploadify.swf插件进行上传的,默认是只能上传一张图片的,但是uploadify.swf是支持多图片批量上传的,那么我们稍加改动就可实现OneThi ...
- asp.net+swfupload 多图片批量上传(附源码下载)
asp.net的文件上传都是单个文件上传方式,无法执行一次性多张图片批量上传操作,要实现多图片批量上传需要借助于flash,通过flash选取多个图片(文件),然后再通过后端服务进行上传操作. 本次教 ...
- Mvc Kissy uploader实现图片批量上传 附带瀑布流的照片墙
前言 KISSY 是由阿里集团前端工程师们发起创建的一个开源 JS 框架.它具备模块化.高扩展性.组件齐全,接口一致.自主开发.适合多种应用场景等特性.本人在一次项目中层使用这个uploader组件. ...
随机推荐
- android 37 线程通信Looper
安卓程序的主线程也叫UI线程. 工作线程和主线程的差别:安卓主线程已经调用了Looper.prepare()方法了,已经有一个MessageQueue对象了,所以才可以在工作线程用Handler发消息 ...
- [转] 三步将你的 React Native 项目运行在 Web 浏览器上面
React Native 的出现,让前端工程师拥有了使用 JavaScript 编写原生 APP 的能力.相比之前的 Web app 来说,对于性能和用户体验提升了非常多. 但是 React Nati ...
- JDK5-增强for循环
下面的程序演示了增强for循环在数组及集合中的应用: import java.util.ArrayList; import java.util.HashMap; import java.util.Ha ...
- css考核点整理(四)-css盒模型
http://paranimage.com/css-box-model/
- oracle在linux配置信息
这两天在linux中给已有的oracle添加新实例,其中涉及数据库服务.监听配置,oracle服务是否正常.监听是否成功等操作,特此记录存档,以备后用. oracle服务启动操作命令 1.查看orac ...
- Python之路【第十七篇】:Django之【进阶篇】
Python之路[第十七篇]:Django[进阶篇 ] Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接 ...
- Nodejs服务器端脚本
首先是安装,安装很简单,下载一个msi文件后一路下一步,没有难度, 测试的时候,如果你发现你的环境变量里面没有自动添加进去,也可以进行手动添加环境变量 之后在命令窗口输入: 得到nodejs的版本就说 ...
- angularjs-ngTable select filter
jsp <td title="'Status'" filter="{status: 'select'}" filter-data="fn.sta ...
- mysql locktables
SELECT r.trx_id waiting_trx_id, r.trx_mysql_thread_id waiting_thread, TIMESTAMPDIFF( ...
- CSS3美化表单控件
表单的默认控件在不同的浏览器中的样式不同,用户体验很差.用CSS3可以实现表单控件的美化,可以提供更好的用户体验.不足之处就是浏览器的兼容性问题. 一.下拉控件 效果图: 下拉控件的布局结构: < ...