Android开发中Post方式上传文件(头像之类的)
/*** 文件上传* @param actionUrl:上传接口地址* @param files:需上传的文件集合* @return* @throws IOException*/ public static String upLoadFilePost(String actionUrl, 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);DataOutputStream outStream = new DataOutputStream(conn.getOutputStream());// 发送文件数据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();if (res == 200) {InputStream in = conn.getInputStream();InputStreamReader isReader = new InputStreamReader(in);BufferedReader bufReader = new BufferedReader(isReader);String line = "";String data = "";while ((line = bufReader.readLine()) != null) {data += line;}outStream.close();conn.disconnect();return data;}outStream.close();conn.disconnect();return ""; }
PS:在子线程中调用。
Android开发中Post方式上传文件(头像之类的)相关推荐
- android项目中使用的服务器上,android 开发中使用okhttp上传文件到服务器
开发android手机客户端,常常会需要上传文件到服务器,比如:你手机里的照片. 使用okhttp会是一个很好的选择.它使用很简单,而且运行效率也很高. 首先,在 app/build.gradle 的 ...
- 转:vc中如何通过http的post方式上传文件
文章引自:http://blog.myspace.cn/e/404248359.htm vc中如何通过http的post方式上传文件 HTTP响应 在接收和解释请求消息后,服务器会返回一个HT ...
- 详细阐述Web开发中的图片上传问题
Web开发中,图片上传是一种极其常见的功能.但是呢,每次做上传,都花费了不少时间. 一个"小功能"花费我这么多时间,真心不愉快. So,要得认真分析下原因. 1.在最初学习Java ...
- jquery ajax java上传文件_jQuery Ajax方式上传文件的方法
jQuery Ajax方式上传文件用到两个对象 第一个对象:FormData 第二个对象:XMLHttpRequest 目前新版的Firefox 与 Chrome 等支持HTML5的浏览器完美的支持这 ...
- ajax上传 java,javaWeb中使用ajax上传文件
javaWeb上传图片 上传文件所必要的两个jar包:commons-fileupload.jar.commons-io.jar. 核心代码: String withPath = req.getSer ...
- Android中layout目录的作用,Android 开发中layout下的子文件夹
Android 开发中layout下的子文件夹 发布时间:2020-10-25 11:42:36 来源:脚本之家 阅读:71 作者:厚土火焰山 如果一个项目内有很多个界面,那么在layout下会有太多 ...
- python post 上传文件_Python通过POST方式上传文件及提交参数到远程服务器
前言 在树莓派开发过程中,因为没有公网IP,为了方便访问获取信息,有时候我们需要将树莓派获取到的一些数据或文件上传到云端服务器.这是一个比较简便的方法. Python代码 需要用到requests库, ...
- idea构建post请求_IntelliJ IDEA 模拟 POST方式 上传文件
IntelliJ IDEA 模拟 POST方式 上传文件 IntelliJ IDEA 集成了 HTTP Request,再没有postman的场景下,也可以很方便地模拟各种 HTTP 请求方式的场景. ...
- java序列化表单同步请求_Ajax serialize() 表单进行序列化方式上传文件
通过传统的 form 表单提交的方式上传文件 上传文件: 不过传统的 form 表单提交会导致页面刷新,但是在有些情况下,我们不希望页面被刷新,这种时候我们都是使用 Ajax 的方式进行请求的. 使用 ...
最新文章
- jdbc mysql 返回游标_使用JdbcTemplate流式(游标)读取数据库
- wordpress acf字段 不同样式_WordPress强大搜索功能如何实现?安装Ivory Search插件
- python使用openweathermap API获取全世界主要城市天气信息
- python 多维list 排序_人生苦短 | Python列表和元组归纳整理
- python全栈学习--day3
- Linux基础——gcc编译、静态库与动态库(共享库)
- RSA的密钥把JAVA格式转换成C#的格式
- HDU多校6 - 6831 Fragrant numbers(dfs爆搜+打表)
- 前端学习(2932):vue中的v-if
- SLF4J with Logback in a Maven Project | Mograblog
- linux的nohup命令
- 阿里云物联网平台 > 设备接入 > 使用开放协议自主接入 > MQTT协议接入 >
- BIO、NIO、AIO,还傻傻分不清?
- Mathematic Paradigm
- 哪个手机浏览器支持html5,四大手机浏览器HTML5兼容性横评
- WSL2 网络异常排查 [ping 不通、网络地址异常、缺少默认路由、被宿主机防火墙拦截]
- html版权字符大全,HTML特殊字符大全
- 黑马前端基础-HTML-SE
- 新造车杀入15万,燃油车慌了?
- STM32F767多通道ADC采集+DMA传输