android服务器端上传方法:    package cn.test.web.servlet;            import java.io.File;      import java.io.IOException;      import java.util.List;            import javax.servlet.ServletException;      import javax.servlet.http.HttpServlet;      import javax.servlet.http.HttpServletRequest;      import javax.servlet.http.HttpServletResponse;            import org.apache.commons.fileupload.FileItem;      import org.apache.commons.fileupload.FileItemFactory;      import org.apache.commons.fileupload.disk.DiskFileItemFactory;      import org.apache.commons.fileupload.servlet.ServletFileUpload;            public class LoginServlet extends HttpServlet {                private static final long serialVersionUID = 1L;                @Override          public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {              doPost(request, response);          }                @Override          public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {              boolean isMultipart = ServletFileUpload.isMultipartContent(request);              if (isMultipart)                  try {                      FileItemFactory factory = new DiskFileItemFactory();                      ServletFileUpload upload = new ServletFileUpload(factory);                      List<FileItem> items = upload.parseRequest(request);                      File dir = new File(request.getSession().getServletContext().getRealPath("/WEB-INF/upload"));                      //创建目录                      dir.mkdir();                      for (FileItem item : items)                          if (item.isFormField())                              System.out.println(item.getFieldName() + ": " + item.getString());                          else{                              item.write(new File(dir,item.getName().substring(item.getName().lastIndexOf("\\")+1)));                          }                  } catch (Exception e) {                      e.printStackTrace();                  }              else {                  System.out.println(request.getMethod());                  System.out.println(request.getParameter("username"));                  System.out.println(request.getParameter("password"));              }          }      }  
android客户器端上传方法:首先,要有一个javaBean类FormFile封装文件的信息:
public class FormFile {/* 上传文件的数据 */private byte[] data;/* 文件名称 */private String filname;/* 表单字段名称*/private String formname;/* 内容类型 */private String contentType = "application/octet-stream"; //需要查阅相关的资料public FormFile(String filname, byte[] data, String formname, String contentType) {  this.data = data;  this.filname = filname;  this.formname = formname;  if(contentType!=null) this.contentType = contentType;}public byte[] getData() {  return data;}public void setData(byte[] data) {  this.data = data;}public String getFilname() {  return filname;}public void setFilname(String filname) {  this.filname = filname;}public String getFormname() {  return formname;}public void setFormname(String formname) {  this.formname = formname;}public String getContentType() {  return contentType;}public void setContentType(String contentType) {  this.contentType = contentType;}}

实现文件上传的代码如下:
/*** 直接通过HTTP协议提交数据到服务器,实现表单提交功能* @param actionUrl 上传路径* @param params 请求参数 key为参数名,value为参数值* @param file 上传文件*/public static String post(String actionUrl, Map<String, String> params, FormFile[] files) {      try {                    String BOUNDARY = “———7d4a6d158c9″; //数据分隔线          String MULTIPART_FORM_DATA = “multipart/form-data”;                   URL url = new URL(actionUrl);          HttpURLConnection conn = (HttpURLConnection) url.openConnection();          conn.setDoInput(true);//允许输入          conn.setDoOutput(true);//允许输出          conn.setUseCaches(false);//不使用Cache          conn.setRequestMethod(”POST”);                    conn.setRequestProperty(”Connection”, “Keep-Alive”);          conn.setRequestProperty(”Charset”, “UTF-8″);          conn.setRequestProperty(”Content-Type”, MULTIPART_FORM_DATA + “; boundary=” + BOUNDARY);          StringBuilder sb = new StringBuilder();                   //上传的表单参数部分,格式请参考文章          for (Map.Entry<String, String> entry : params.entrySet()) {//构建表单字段内容              sb.append(”–”);              sb.append(BOUNDARY);              sb.append(”\r\n”);              sb.append(”Content-Disposition: form-data; name=\”"+ entry.getKey() + “\”\r\n\r\n”);              sb.append(entry.getValue());              sb.append(”\r\n”);          }          DataOutputStream outStream = new DataOutputStream(conn.getOutputStream());          outStream.write(sb.toString().getBytes());//发送表单字段数据                   //上传的文件部分,格式请参考文章          for(FormFile file : files){              StringBuilder split = new StringBuilder();              split.append(”–”);              split.append(BOUNDARY);              split.append(”\r\n”);              split.append(”Content-Disposition: form-data;name=\”"+ file.getFormname()+”\”;filename=\”"+ file.getFilname() + “\”\r\n”);              split.append(”Content-Type: “+ file.getContentType()+”\r\n\r\n”);              outStream.write(split.toString().getBytes());              outStream.write(file.getData(), 0, file.getData().length);              outStream.write(”\r\n”.getBytes());          }          byte[] end_data = (”–” + BOUNDARY + “–\r\n”).getBytes();//数据结束标志                   outStream.write(end_data);          outStream.flush();          int cah = conn.getResponseCode();          if (cah != 200) throw new RuntimeException(”请求url失败”);          InputStream is = conn.getInputStream();          int ch;          StringBuilder b = new StringBuilder();          while( (ch = is.read()) != -1 ){              b.append((char)ch);          }          outStream.close();          conn.disconnect();          return b.toString();      } catch (Exception e) {          throw new RuntimeException(e);      }  }  






更多相关文章

  1. Android使用SQLiteDatabase直接存取数据与图像
  2. android 数据库操作 GreenDAO 第三方开源项目
  3. android 使用Okhttp封装上传JSON格式数据的工具类
  4. Android 数据库 短信 监听
  5. android中常见的二种数据解析方法----XML和Json
  6. Android 复习笔记之图解ContentProvider实现数据共享
  7. Android 继承SQLiteOpenHelper自定义DBHelper存取数据与图像
  8. android 网络异步加载数据进度条
  9. android调用系统相机并调整照片大小保存,最后上传照片

随机推荐

  1. Android Spinner (Drop Down List) Examp
  2. Android 设备管理
  3. Android ADT Bundle 0917,SDK Tools r22.2
  4. Android Activity getCurrentFocus()
  5. android Notification 工具类
  6. Android=》Nitification
  7. android 用代码画圆
  8. Android JNI开发
  9. android AOP编程
  10. android studio 关闭log 打印