android 文件io流的上传
来源:互联网 发布:第四方支付系统源码 编辑:程序博客网 时间:2024/05/17 12:56
public static String post(Map<String, String> params,Map<String, File> files) throws IOException {String result = null;String BOUNDARY = java.util.UUID.randomUUID().toString();String PREFIX = "--", LINEND = "\r\n";String MULTIPART_FROM_DATA = "multipart/form-data";String CHARSET = "UTF-8";URL url = new URL(Constants.WEB_URL);HttpURLConnection conn = (HttpURLConnection) url.openConnection();conn.setConnectTimeout(8 * 1000);conn.setReadTimeout(8 * 1000); // 缓存的最长时间conn.setDoInput(true);// 允许输入conn.setDoOutput(true);// 允许输出conn.setUseCaches(false); // 不允许使用缓存conn.setRequestMethod("POST");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());InputStream in = null;// 发送文件数据if (files != null && !files.isEmpty()) {// int i = 0;for (Map.Entry<String, File> file : files.entrySet()) {StringBuilder sb1 = new StringBuilder();sb1.append(PREFIX);sb1.append(BOUNDARY);sb1.append(LINEND);String name = file.getKey().substring(0,file.getKey().lastIndexOf("."));sb1.append("Content-Disposition: form-data; name=\"" + name+ "\"; filename=\"" + file.getKey() + "\"" + LINEND);//name是文件的格式,filename是文件名字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());// i++;}// 请求结束标志byte[] end_data = (PREFIX + BOUNDARY + PREFIX + LINEND).getBytes();outStream.write(end_data);outStream.flush();// 得到响应码// int res = conn.getResponseCode();if (conn.getResponseCode() == 200) {in = conn.getInputStream();int ch;StringBuilder sb2 = new StringBuilder();while ((ch = in.read()) != -1) {sb2.append((char) ch);}LogToos.LogDebug(sb2.toString());result = sb2.toString();} else {result = null;}outStream.close();conn.disconnect();}return result;}文件上传的io,需要主要文件的时候访问超时的问题
0 0
- android 文件io流的上传
- IO流实现文件上传
- android的文件IO
- Android 文件的上传
- Android文件的上传
- Android 文件的上传
- commons io上传文件
- fastdfs文件上传java--根据本地io流上传
- 文件的IO流
- Java、Android文件IO流
- Android 实现文件的上传
- android文件的上传操作
- android下的文件上传
- UEditor上传文件IO异常
- 上传文件与socket.io
- 使用uploadify上传文件一直报IO error的原因
- android资源文件io,以及内存外存的io
- io流文件的读取
- 交换排序之冒泡排序
- UVA 11488 Hyper Prefix Sets
- PTAM调试 win7+VS2010
- 上下拉刷新实现功能
- Android微信登陆
- android 文件io流的上传
- NoSQL - Redis应用场景
- Handler用法
- linux FTP
- java文件读写,文本与文件互换
- PHP漏洞全解(八)-文件上传漏洞
- UI之delegate
- UART 通信之RTC/CTS DTR/DSR流控制
- C语言基础 之 switch-case语句