首页 > 系统 > Android > 正文

android 使用post方式上传文件

2019-11-14 10:29:53
字体:
来源:转载
供稿:网友

转载自:http://blog.csdn.net/banyingli/article/details/6820436

[java] view plaincopypublic static String post(String actionUrl, Map<String, String> params,          Map<String, File> files) throws IOException {        String BOUNDARY = java.util.UUID.randomUUID().toString();      String PREFIX = "--", LINEND = "/r/n";      String MULTipART_FROM_DATA = "multipart/form-data";      String CHARSET = "UTF-8";      URL uri = new URL(actionUrl);      HttpURLConnection conn = (HttpURLConnection) uri.openConnection();      conn.setReadTimeout(5 * 1000);      conn.setDoInput(true);// 允许输入      conn.setDoOutput(true);// 允许输出      conn.setUseCaches(false);      conn.setRequestMethod("POST"); // Post方式      conn.setRequestProperty("connection", "keep-alive");      conn.setRequestProperty("Charsert", "UTF-8");      conn.setRequestProperty("Content-Type", MULTIPART_FROM_DATA              + ";boundary=" + BOUNDARY);        // 首先组拼文本类型的参数      StringBuilder sb = new StringBuilder();      for (Map.Entry<String, String> entry : params.entrySet()) {          sb.append(PREFIX);          sb.append(BOUNDARY);          sb.append(LINEND);          sb.append("Content-Disposition: form-data; name=/""                  + entry.getKey() + "/"" + LINEND);          sb.append("Content-Type: text/plain; charset=" + CHARSET + LINEND);          sb.append("Content-Transfer-Encoding: 8bit" + LINEND);          sb.append(LINEND);          sb.append(entry.getValue());          sb.append(LINEND);      }        DataOutputStream outStream = new DataOutputStream(conn              .getOutputStream());      outStream.write(sb.toString().getBytes());        // 发送文件数据      if (files != null)          for (Map.Entry<String, File> file : files.entrySet()) {              StringBuilder sb1 = new StringBuilder();              sb1.append(PREFIX);              sb1.append(BOUNDARY);              sb1.append(LINEND);              sb1                      .append("Content-Disposition: form-data; name=/"file/"; filename=/""                              + file.getKey() + "/"" + LINEND);              sb1.append("Content-Type: application/octet-stream; charset="                      + CHARSET + LINEND);              sb1.append(LINEND);              outStream.write(sb1.toString().getBytes());              InputStream is = new FileInputStream(file.getValue());              byte[] buffer = new byte[1024];              int len = 0;              while ((len = is.read(buffer)) != -1) {                  outStream.write(buffer, 0, len);              }                is.close();              outStream.write(LINEND.getBytes());          }        // 请求结束标志      byte[] end_data = (PREFIX + BOUNDARY + PREFIX + LINEND).getBytes();      outStream.write(end_data);      outStream.flush();        // 得到响应码      int res = conn.getResponseCode();      InputStream in = conn.getInputStream();      InputStreamReader isReader = new InputStreamReader(in);      BufferedReader bufReader = new BufferedReader(isReader);      String line = null;      String data = "OK";        while ((line = bufReader.readLine()) != null)          data += line;        if (res == 200) {          int ch;          StringBuilder sb2 = new StringBuilder();          while ((ch = in.read()) != -1) {              sb2.append((char) ch);          }      }      outStream.close();      conn.disconnect();      return in.toString();  }  
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表