最近手头上需要批量上传一些保存到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卡图片的更多相关文章

  1. TP3.2批量上传文件(图片),解决同名冲突问题

    1.html <form action="{:U('Upload/index')}" enctype="multipart/form-data" meth ...

  2. C# 结合html5 批量上传文件和图片预览

    html5 新特性 <input id="imgsf" type="file" name="imgsf" multiple /> ...

  3. 使用KindEditor富文本编辑器,点击批量上传按钮没有选择图片按钮

    问题:批量上传没有选择图片按钮

  4. 利用WebUploader进行图片批量上传,在页面显示后选择多张图片压缩至指定路径【java】

    WebUploader是由Baidu WebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现代文件上传组件.在现代的浏览器里面能充分发挥HTML5的优势,同时又不摒弃主流IE浏览 ...

  5. Mvc利用淘宝Kissy uploader实现图片批量上传附带瀑布流的照片墙

    前言 KISSY 是由阿里集团前端工程师们发起创建的一个开源 JS 框架.它具备模块化.高扩展性.组件齐全,接口一致.自主开发.适合多种应用场景等特性.本人在一次项目中层使用这个uploader组件. ...

  6. KindEditor图片批量上传

    KindEditor编辑器图片批量上传采用了上传插件swfupload.swf,所以后台上传文件方法返回格式应为JSONObject的String格式(注). JSONObject格式: JSONOb ...

  7. OneThink实现多图片批量上传功能

    OneThink原生系统中的图片上传功能是uploadify.swf插件进行上传的,默认是只能上传一张图片的,但是uploadify.swf是支持多图片批量上传的,那么我们稍加改动就可实现OneThi ...

  8. asp.net+swfupload 多图片批量上传(附源码下载)

    asp.net的文件上传都是单个文件上传方式,无法执行一次性多张图片批量上传操作,要实现多图片批量上传需要借助于flash,通过flash选取多个图片(文件),然后再通过后端服务进行上传操作. 本次教 ...

  9. Mvc Kissy uploader实现图片批量上传 附带瀑布流的照片墙

    前言 KISSY 是由阿里集团前端工程师们发起创建的一个开源 JS 框架.它具备模块化.高扩展性.组件齐全,接口一致.自主开发.适合多种应用场景等特性.本人在一次项目中层使用这个uploader组件. ...

随机推荐

  1. 【Spring五】AOP之使用注解配置

    AOP使用注解配置流程: 1.当spring容器启动时候.    < context:component- scan base-package= "cn.itheima03.sprin ...

  2. SystemTap----常用变量、宏、函数和技巧

    http://blog.csdn.net/moonvs2010/article/category/1570309

  3. [转] webpack debug in webstorm

    先run build,然后用node server.js来做 WebStorm 11 adds support for debugging client-side apps built with We ...

  4. 利用 Lua 实现 App 动态化方案

    因为动态化的东西我第一次看实现方案的源码,而且目前还是大三的学生,缺少很多实践经验说错的地方还请原谅,也希望能指出,被告知.想了很久还是决定写出来,求大神勿喷. 并且我的一个朋友bestswifter ...

  5. java中关于public class

    在编写类的时候可以使用两种方式定义类:     public class定义类:     class定义类: 1,如果一个类声明的时候使用了public class进行了声明,则类名称必须与文件名称完 ...

  6. 关于EF查询表里的部分字段

    这个在项目中用到了,在网上找了一下才找到,留下来以后自已使用. List<UniversalInfo> list =new List<UniversalInfo>(); lis ...

  7. Android手机开发者模式设置

    通用设置 情景1 开发者选项已经激活,并且在设置列表中能看到 设置-->开发者选项(开发者选项已经激活) 情景2 开发者选项还没有激活,并且在设置列表中能不能看到 如果没有看到开发者选项是因办手 ...

  8. ftp不能上传解决办法

    自己的服务器,然后我分好ftp,有一天,有个客户要传东西,发现怎么也传不上,但是可以下载,,,,弄了半天,目录权限也是完全访问,但还是不行,原来是serv-u分配的空间小了啊,所以只能下载不能上传.. ...

  9. 利用SQLiteOpenHelper创建数据库,进行增删改查操作

    Android中提供SQLiteOpenHelper类,在该类的构造器中,调用Context中的方法创建并打开一个指定名称的数据库对象.继承和扩展SQLiteOpenHelper类主要做的工作就是重写 ...

  10. sqlserver触发器如何将一个库中的数据插入到另外一个库中

    需求:实现的功能就是,查询当前表的所有信息,插入到另外一个库中(同一台机器,同一个SqlServer) 解决:insert into dB2.dbo.TB2 select * from db1.dbo ...