上传图片之表单请求
来源:互联网 发布:知乎赚钱 编辑:程序博客网 时间:2024/05/23 15:27
private String uploadAvatar(File file) { LogUtil.d("uploadAvatar:" + System.currentTimeMillis()); mUploadFile = file; int TIME_OUT = 60 * 1000; // 超时时间 String CHARSET = "utf-8"; // 设置编码 String SUCCESS = "1"; String FAILURE = "0"; if (file != null && file.isFile()) { String BOUNDARY = UUID.randomUUID().toString(); // 边界标识 随机生成 String PREFIX = "--"; String LINE_END = "\r\n"; String CONTENT_TYPE = "multipart/form-data"; // 内容类型 String requestURL = Urls.UPDATE_HEADER; requestURL += "?" + Urls.PARAM_TOKEN + "=" + AccountManager.token(); requestURL += "&" + Urls.PARAM_PHONE_ID + "=" + PlatformUtils.id(GoPlusApplication.getApplication()); requestURL += "&" + Urls.PARAM_USERID + "=" + AccountManager.currentUserId(); try { URL url = new URL(requestURL); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setReadTimeout(TIME_OUT); conn.setConnectTimeout(TIME_OUT); conn.setDoInput(true); // 允许输入流 conn.setDoOutput(true); // 允许输出流 conn.setUseCaches(false); // 不允许使用缓存 conn.setRequestMethod("POST"); // 请求方式 conn.setRequestProperty("Charset", CHARSET); // 设置编码 conn.setRequestProperty("connection", "keep-alive"); conn.setRequestProperty("Content-Type", CONTENT_TYPE + ";boundary=" + BOUNDARY); conn.connect(); /** * 当文件不为空,把文件包装并且上传 */ OutputStream outputSteam = conn.getOutputStream(); DataOutputStream dos = new DataOutputStream(outputSteam); StringBuffer sb = new StringBuffer(); sb.append(PREFIX); sb.append(BOUNDARY); sb.append(LINE_END); sb.append("Content-Disposition: form-data; name=\"file\"; filename=\"" + file.getName() + "\"" + LINE_END); sb.append("Content-Type: multipart/form-data; charset=" + CHARSET + LINE_END); sb.append(LINE_END); dos.write(sb.toString().getBytes()); InputStream is = new FileInputStream(file); byte[] bytes = new byte[10240]; int len = 0; while ((len = is.read(bytes)) != -1) { dos.write(bytes, 0, len); LogUtil.d("write:" + len); } is.close(); dos.write(LINE_END.getBytes()); byte[] end_data = (PREFIX + BOUNDARY + PREFIX + LINE_END).getBytes(); dos.write(end_data); dos.flush(); LogUtil.d("uploadAvatar get response code:" + System.currentTimeMillis()); InputStream responseIS = conn.getInputStream(); String response = ""; while ((len = responseIS.read(bytes)) != -1) { response += new String(bytes, 0, len); LogUtil.d("读取相应数据:" + len); } LogUtil.d("响应数据:" + response); /** * 获取响应码 200=成功 当响应成功,获取响应的流 */ int res = conn.getResponseCode(); LogUtil.d("响应码:" + res); if (res == 200) { //接收到response mUploadHeaderCallback.onSucc(response); return SUCCESS; } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } mUploadHeaderCallback.onfailed(""); return FAILURE; } else { mUploadHeaderCallback.onfailed(""); return FAILURE; } }
1 0
- 上传图片之表单请求
- 表单提交之上传图片
- ajax异步请求提交上传图片表单并预览图片
- ajax异步请求提交上传图片表单并预览图片
- iOS 表单上传图片
- post上传表单图片
- formb表单上传图片
- 图片+表单的上传
- 异步请求上传图片
- SpringMVC之MultipartHttpServletRequest上传图片与其他表单信息---初级
- 上传图片表单file之我的理解
- ajax 请求后台数据(及使用FormData对象提交表单及上传图片)
- 表单存在图片上传的情况 servlet表单图片上传
- iOS之网络请求之AFN表单上传之form-data
- Extjs 表单 显示图片 + 上传
- AjaxForm异步上传表单、图片
- 单张图片上传表单提交
- form表单上传文件、图片
- javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building
- BeanFactory和FactoryBean的区别
- tomcat配置https自签名证书
- 伪静态重写模块rewrite.dll及httpd.ini文件参考下载
- 选择困难症!接口?虚基类?
- 上传图片之表单请求
- alert 和 console.log的区别
- BIOS工作原理
- 我的服务器开发之路-安装thinkphp
- oracle面试题
- chapter 6 exercise 13
- Hibernate一一映射
- 位运算
- 应用开机自启动&首启动&是否安装&应用信息界面&启动程序&桌面选择器