android上传文件到服务器的一个方法
来源:互联网 发布:蚁群算法背包问题 编辑:程序博客网 时间:2024/05/18 02:43
public String fileUpload(String url, 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(url); HttpURLConnection conn = (HttpURLConnection) uri.openConnection(); conn.setReadTimeout(10 * 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(); if (params != null) { 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()) { String paramName = file.getKey(); File f = file.getValue(); StringBuilder sb1 = new StringBuilder(); sb1.append(PREFIX); sb1.append(BOUNDARY); sb1.append(LINEND); sb1.append("Content-Disposition: form-data; name=\"" + paramName + "\"; filename=\"" + f.getName() + "\"" + LINEND); sb1.append("Content-Type: application/octet-stream; charset=" + CHARSET + LINEND); sb1.append(LINEND); outStream.write(sb1.toString().getBytes()); InputStream is = new FileInputStream(f); byte[] buffer = new byte[4 * 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; StringBuffer sb2 = new StringBuffer(); if (res == 200) { while ((line = bufReader.readLine()) != null) { sb2.append(line); } } outStream.close(); in.close(); conn.disconnect(); return sb2.toString(); }
0 0
- android上传文件到服务器的一个方法
- PHP:上传文件到服务器的方法
- Android上传文件到服务器的代码
- ASP.NET 中将文件上传到另外一个服务器的方法二
- ASP.NET 中将文件上传到另外一个服务器的方法
- ASP.NET 中将文件上传到另外一个服务器的方法二
- android文件上传到服务器
- android上传文件到服务器
- android文件上传到服务器
- android 上传文件到服务器
- android 文件上传到服务器
- Android上传文件到服务器
- Android上传文件到服务器
- android上传文件到服务器
- android上传文件到服务器
- android上传文件到服务器
- [android] 文件上传到服务器
- android -上传文件到服务器
- liunx两台机器之间ssh无密码联通
- QML概念及框架--在组件中添加函数和信号
- TI AM335X处理器介绍
- Jedis简单操作,存储实体
- jackson 处理日期类型
- android上传文件到服务器的一个方法
- 【5/21】一般网站的访问过程
- IOS开发之__bridge,__bridge_transfer和__bridge_retained
- Oracle一列中有数字和文字比较大小
- 第一篇博客
- Offset UITableView Content When Keyboard Appears
- 树形DP--HihoCoder 1104 Suzhou Adventure
- RabbitMQ(python实现)学习之二:Producer发送消息至多个消息队列queue(广播消息)
- String类