Android上传文件到服务端可以使用HttpConnection 上传文件,也可以使用Android封装好的HttpClient类。当仅仅上传文件可以直接使用httpconnection 上传比较方便快捷。

1、使用HttpConection上传文件。将文件转换成表单数据流。主要的思路就自己构造个http协议内容,服务端解析报文获得表单数据。代码片段:

 HttpURLConnection con;try {con = (HttpURLConnection) url.openConnection();con.setConnectTimeout(C_TimeOut);/* 允许Input、Output,不使用Cache */con.setDoInput(true);con.setDoOutput(true);con.setUseCaches(false);/* 设置传送的method=POST */con.setRequestMethod("POST");/* setRequestProperty */con.setRequestProperty("Connection", "Keep-Alive");con.setRequestProperty("Charset", "UTF-8");con.setRequestProperty("Content-Type","multipart/form-data;boundary=" + boundary);/* 设置DataOutputStream */ DataOutputStream ds = new DataOutputStream(con.getOutputStream());     FileInputStream fStream = new FileInputStream(file);      /* 设置每次写入1024bytes */      int bufferSize = 1024;      byte[] buffer = new byte[bufferSize];      int length = -1;      /* 从文件读取数据至缓冲区 */      while((length = fStream.read(buffer)) != -1)      {        /* 将资料写入DataOutputStream中 */        ds.write(buffer, 0, length);      }       fStream.close();       ds.flush();      ds.close();          


可以参考

①《在 Android 上通过模拟 HTTP multipart/form-data 请求协议信息实现图片上传》(http://bertlee.iteye.com/blog/1134576)。

②《关于android Http访问,上传,用了三个方法

2、使用Android HttpClient类上传参数。下面我在网上搜到得代码,忘记出处了

private static boolean sendPOSTRequestHttpClient(String path,Map<String, String> params) throws Exception {// 封装请求参数List<NameValuePair> pair = new ArrayList<NameValuePair>();if (params != null && !params.isEmpty()) {for (Map.Entry<String, String> entry : params.entrySet()) {pair.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));}} // 把请求参数变成请求体部分UrlEncodedFormEntity uee = new UrlEncodedFormEntity(pair, "utf-8"); // 使用HttpPost对象设置发送的URL路径HttpPost post = new HttpPost(path); // 发送请求体post.setEntity(uee); // 创建一个浏览器对象,以把POST对象向服务器发送,并返回响应消息DefaultHttpClient dhc = new DefaultHttpClient();HttpResponse response = dhc.execute(post);if (response.getStatusLine().getStatusCode() == 200) {Log.i("http", "httpclient");return true;}return false;}}


3、使用httpClient上传文字信息和文件信息。使用httpClient上传文件非常的方便。不过需要导入apache-mime4j-0.6.jar 和httpmime-4.0.jar两个.jar包。

// 封装请求参数MultipartEntity mpEntity = new MultipartEntity();if (params != null && !params.isEmpty()) {for (Map.Entry<String, String> entry : params.entrySet()) {StringBody par = new StringBody(entry.getValue());mpEntity.addPart(entry.getKey(), par);}}// 图片if (!imagepath.equals("")) {FileBody file = new FileBody(new File(imagepath));mpEntity.addPart("photo", file);}// 使用HttpPost对象设置发送的URL路径HttpPost post = new HttpPost(path);// 发送请求体post.setEntity(mpEntity);// 创建一个浏览器对象,以把POST对象向服务器发送,并返回响应消息DefaultHttpClient dhc = new DefaultHttpClient();HttpResponse response = dhc.execute(post);

FileBody类可以把文件封装到表单中,实现附件的上传。

关于httpClient上传文件可以参考链接:http://www.eoeandroid.com/forum.php?mod=viewthread&tid=76721&page=1

需要用的的ja下载地址r:http://download.csdn.net/detail/china1988s/3791514

参考:

①《在 Android 上通过模拟 HTTP multipart/form-data 请求协议信息实现图片上传》(http://bertlee.iteye.com/blog/1134576)。

②《关于android Http访问,上传,用了三个方法

更多相关文章

  1. 箭头函数的基础使用
  2. NPM 和webpack 的基础使用
  3. Python list sort方法的具体使用
  4. 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
  5. 推荐--《Android深入浅出》
  6. iphone/android比较学习之──图片、文件、字符串
  7. Intent的Action实现应用程序之间的切换
  8. Android下实现一个Activity的全屏显示
  9. Android——RecyclerView入门学习之RecyclerView.Adapter

随机推荐

  1. Android高手进阶教程(二)之----Android(
  2. Myeclipse 安装时候android adt, android
  3. 热点:Android(安卓)10(Android(安卓)Q)发布
  4. Mac上非常好用的免费的Android文件传输工
  5. Android开发之低调的Service
  6. Perl登陆Android
  7. adb使用-详细教程(Awesome Adb)
  8. Android自动化测试框架Robotium
  9. Android多线程下载远程图片
  10. Android(安卓)Service,startService binde