继选择图片相册并通过ImageView展示在Activity中,获取到图片真实路径后(详见Android获取相册中图片的路径 4.4版本前后的变化),
将通过以下两种方式(当然了不止这两种)将获取到的图片上传到服务端,仅涉及客户端代码部分。

  1. 使用HttpURLConnection的方式模拟拼装HTTP请求
  2. 使用HttpClient(6.0已经废弃了HttpClient,但是还有有必要记录下)

本篇博客将主要记录第一种方式,下篇将记录第二种方式。

主要是模拟HTTP请求,以及流的处理。
核心代码如下,详情请移步本人GITHUB

  try {// 实例化URLURL httpURL = new URL(url);// 打开连接HttpURLConnection connection = (HttpURLConnection) httpURL.openConnection();/**设置connection属性 ,拼装HTTP请求协议**///允许输入流 输出流  不使用缓存connection.setDoInput(true);connection.setDoOutput(true);connection.setUseCaches(false);// 以POST的方式提交connection.setRequestMethod("POST");// 设置超时时间connection.setReadTimeout(5 * 1000);connection.setConnectTimeout(5 * 1000);// 设置RequestPropertyconnection.setRequestProperty("Connection", "Keep-Alive");connection.setRequestProperty("Charset", "UTF-8");connection.setRequestProperty("Content-Type", CONTENT_TYPE + "; boundary=" + BOUNDARY);// 构造DataOutputStreamDataOutputStream ds = new DataOutputStream(connection.getOutputStream());/** 模拟拼装请求正文头  在浏览器开发者工具中F12网络中可以查看-----------------------------7df2cd15150370  (这个BOUNDARY比请求头的多--,所以定义了个prefix)Content-Disposition: form-data; name="file"; filename="C:\Users\Mr.Yang\Desktop\girl.jpg"Content-Type: image/jpeg-----------------------------7df2cd15150370--**/// 模拟 -----------------------------7df2cd15150370ds.writeBytes(PREFIX + BOUNDARY + LINE_END);ds.writeBytes("Content-Disposition: form-data; "+ "name=\"file\";filename=\"" + file.getName() + "\"" + LINE_END);ds.writeBytes(LINE_END);// 构建要上传的文件的FileInputStreamFileInputStream fis = new FileInputStream(file);// 设置每次写入1024 * 4 bytesbyte[] buffer = new byte[1024 * 4];int len = -1;// 从文件读取数据至缓冲区while ((len = fis.read(buffer)) != -1) {// 将资料写入DataOutputStream中ds.write(buffer, 0, len);}// 模拟换行符ds.writeBytes(LINE_END);// 模拟结尾的信息ds.writeBytes(PREFIX + BOUNDARY + PREFIX + LINE_END);// Flushes this stream to ensure all pending data is sent out to the targetds.flush();/** 接收服务端的返回信息**/BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));StringBuffer sb = new StringBuffer();String line;while ((line = reader.readLine()) != null) {sb.append(line);}LogUtils.d("服务端返回:" + sb.toString());// 关闭流if (fis != null) {fis.close();}if (reader != null) {reader.close();}if (ds != null) {ds.close();}// 发送消息,在主线程更新提示信息Message message = new Message();message.what = 1;message.obj = sb.toString();handler.sendMessage(message);} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}

Android-上传图片(-)_HttpURLConnection相关推荐

  1. php android 图片上传,android上传图片到PHP的过程详解

    这篇文章主要介绍了android上传图片到PHP的过程详解,需要的朋友可以参考下 今天在做上传头像的时候,总是提交连接超时错误,报错信息如下:XXXXXXSokcetTimeOutXXXXXXXX 然 ...

  2. Android 上传图片到服务器(多文件上传)

    Android客户端的UI与<Android 上传图片到服务器(单文件上传)>唯一区别增加了多文件上传的功能. 1.Android客户端多文件上传核心代码: * 多文件上传* @param ...

  3. 手机端如何把图片传到php后台,android上传图片到PHP后台全过程

    DB2离线和在线全备.增量备份及恢复的操作步骤 1.离线全备份 1).首先确保没有用户使用DB2: $db2 list applications for db sample 2).停掉数据库并重新启动 ...

  4. android 上传图片到服务器Tomcat(Struts2)

    在做android开发的时候,有时你会用到图片的上传功能,在我的android项目中,我是选中图片,点击上传多张图片 android客户端上传图片部分的代码如下: package com.exampl ...

  5. Android 上传图片实例,java上传图片接口

    1.完整上传图片代码方法: private static final int TIME_OUT = 10*1000; //超时时间 private static final String CHARSE ...

  6. android上传图片被旋转,解决android有的手机拍照后上传图片被旋转的问题

    需求:做仿新浪发微博的项目,能够上传图片还有两外一个项目用到手机拍摄图片,这两个都需要把图片上传到服务器 遇到问题:有的手机拍摄的图片旋转90度,有的图片旋转了180度,有的手机是正常的,服务器要求的 ...

  7. Android上传图片到七牛云

    写在前边 现在的时间:2019-06-23 怎样获得一个七牛云的存储空间就不写了,重点是怎么上传图片. 准备工作-处理权限 网络权限 添加访问网络权限 <uses-permission andr ...

  8. cocos Creator android 上传图片与数据

    1,从相册 相机中获取图片 a),自定义变量 private static Context context;public static AppActivity app ;private static ...

  9. android上传图片到PHP后台全过程

    PS:便宜的服务器可是会不定时的坑你一把. 今天在修改app的一些交互以及重构代码.一切都是那么顺利,啪啪啪,runing,测试没问题,再啪啪啪... 突然,测试上传头像的时候,老是连接超时....报 ...

  10. android 大图片处理方法,android 上传图片过大处理

    在开发Android应用时,会经常上传图片到服务器,会经常出现上传图片失败和时间过长的问题 为了解决这个问题,决定把照片进行压缩后上保存后本地缓存文件夹后再上传 使用方法: //压缩后得到新的图片路径 ...

最新文章

  1. 给羊羔:学习web前端开发的路线(一)
  2. 怎样不让Dreamweaver中HTML源代码不自动换行??
  3. 2017.5.5-afternoon
  4. VC文件扩展名解读大全
  5. 负载均衡—算法/策略
  6. 生成式模型和判别式模型(转)
  7. 【caffe-Windows】基于Python多标签方法——VOC2012数据集
  8. JS中URL编码方法的比较
  9. 接口jdk1.8与jdk1.9新特性
  10. ffmpeg (三):ffmpeg结合SDL2.0解码音频流
  11. 瑞星杀毒软件爆出高危漏洞 可被利用为“抓鸡工具”
  12. art-记一次提取mmd模型到max和unity
  13. python编程入门到实践第二章_《Python编程:从入门到实践》第二章 变量和简单数据类型 习题答案...
  14. 给网站加上 开心网 转帖功能
  15. linux五笔教程,RHEL6 64位操作系统安装极点五笔输法
  16. 对称加密php,PHP实现对称加密与解密
  17. 用HTML+CSS实现百度静态页面
  18. Psoc Creator入门——EZI2C 通信
  19. uoj198【CTSC2016】时空旅行
  20. 分布式事务之TX-LCN

热门文章

  1. CMake的几种Include
  2. Linux下CMake简明教程(一)简单入门
  3. anaconda换源和恢复默认源
  4. python打地鼠游戏教程_Python入门小游戏,炫酷打地鼠教程第二部分,都是干货
  5. 8. Leetcode 26. 删除有序数组中的重复项 (数组-同向双指针-快慢指针)
  6. R语言应用实战-OLS模型算法原理及应用示例
  7. MATLAB实战系列(三十九)-matlab多目标优化之海洋捕食者算法
  8. 15 分钟搭建一个基于XLNET的文本分类模型——keras实战
  9. hadoop2.2.0安装,完全分布式安装
  10. python 函数装饰器学习