android 使用post方式上传文件
来源:互联网 发布:sky黑历史知乎 编辑:程序博客网 时间:2024/06/05 22:52
转载自:http://blog.csdn.net/banyingli/article/details/6820436
- public 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();
- }
0 0
- android 使用post方式上传文件
- android 使用post方式上传文件
- android 使用post方式上传文件
- android 使用post方式上传文件
- Python中使用POST方式上传文件
- Python中使用POST方式上传文件
- Python中使用POST方式上传文件
- Python中使用POST方式上传文件
- POST方式上传文件
- android开发 使用HttpClient访问网络,post、get方式。注册、登陆、上传文件。
- Android POST上传文件
- jersey post方式上传文件
- IOS post方式上传文件
- Python -- post方式上传文件
- http post方式上传文件
- Android中Form Post方式提交,上传文件的实现
- android 文件上传(POST方式模拟表单提交)
- Android使用post方式上传图片到服务器的方法
- angularJs基础(2)
- GTID binlog解析后导入无效
- Java中CAS详解
- python标准库 第五章 数学计算
- jquety插件
- android 使用post方式上传文件
- freemarker 初试 jetty版
- 【Codeforces 761 D Dasha and Very Difficult Problem】
- 机器学习----无监督学习算法之异常检测
- GStreamer基础教程15——继承Clutter
- Android 性能优化:使用 TraceView 找到卡顿的元凶
- yum在线更新出现This system is not registered with RHN等错误解决方法
- SoapUI压力测试的指标项说明
- 中断方式获取按键值