在android项目中,很多情况下上传头像的需求,像qq,新浪微博,微信,飞信等很多应用都有这样的功能。

之前我写过的两篇文章:andorid下从相册选取/拍照选取一张相片并剪切和android下Bitmap和base64之间的转换把他们综合起来,就可以来实现头像从相册/拍照选取,后裁剪再上传的功能

完整源码下载

这里我只贴出上传图片的方法代码,至于怎么获取到获取到图片,请看andorid下从相册选取/拍照选取一张相片并剪切

/** 上传图片*/public void upload(View view) {try {ByteArrayOutputStream out = new ByteArrayOutputStream();bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);out.flush();out.close();byte[] buffer = out.toByteArray();byte[] encode = Base64.encode(buffer, Base64.DEFAULT);String photo = new String(encode);RequestParams params = new RequestParams();params.put("photo", photo);String url = "http://110.65.99.66:8080/jerry/UploadImgServlet";AsyncHttpClient client = new AsyncHttpClient();client.post(url, params, new AsyncHttpResponseHandler() {@Overridepublic void onSuccess(int statusCode, Header[] headers,byte[] responseBody) {try {if (statusCode == 200) {Toast.makeText(MainActivity.this, "头像上传成功!", 0).show();} else {Toast.makeText(MainActivity.this,"网络访问异常,错误码:" + statusCode, 0).show();}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}@Overridepublic void onFailure(int statusCode, Header[] headers,byte[] responseBody, Throwable error) {Toast.makeText(MainActivity.this,"网络访问异常,错误码  > " + statusCode, 0).show();}});} catch (Exception e) {e.printStackTrace();}}

从上边代码可以看出,又用到我钟爱的 android-async-http 安卓异步http框架来访问网络

这样一操作,图片就会按Base64编码格式传送到服务器,而服务器端的代码也是非常简单的

package com.jerry.servlet;import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import com.sun.org.apache.xml.internal.security.exceptions.Base64DecodingException;
import com.sun.org.apache.xml.internal.security.utils.Base64;public class UploadImgServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {request.setCharacterEncoding("utf-8");response.setCharacterEncoding("utf-8");response.setContentType("text/html");String photo = request.getParameter("photo");try {// 对base64数据进行解码byte[] decode = Base64.decode(photo);File file = new File("e:\\decode.jpg");if(!file.exists()) {file.createNewFile();}FileOutputStream out = new FileOutputStream(file);out.write(decode);out.flush();out.close();} catch (Base64DecodingException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {this.doGet(request, response);}}

这样图片就成功的保存带E盘下

android头像相册/拍照选取,裁剪及上传综合案例相关推荐

  1. (复习)android 调用系统相机 图库 裁剪-图片上传-客服端-服务器

    引用转载http://www.cnblogs.com/eyu8874521/archive/2012/07/20/2600697.html 效果: 客服端代码: package com.cn.lxz. ...

  2. 校园随手拍之Android从相册选取图片或拍摄图片并上传(kotlin版)

    前言:我在完成大作业的时候对这一部分不太懂,后来经过查阅资料,觉得这个可以作为一个模块来使用.故写此文章来帮助自己记忆. 需要上传图片的界面: AndroidManifest.xml配置 <?x ...

  3. JavaWeb实现裁剪图片上传完整代码

    JavaWeb实现裁剪图片上传完整代码 这篇文章主要为大家详细介绍了javaWeb实现裁剪图片上传完整代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文实例为大家分享了JavaWeb实现裁剪 ...

  4. Android实现拍照选择相册图片上传图片(多图片上传)功能

    安卓多图片上传代码 直接上代码 1.主程序入口XML文件 <?xml version="1.0" encoding="utf-8"?> <ma ...

  5. html 头像选择,html5点击上传头像选取本地图片上传代码

    特效描述:html5 点击上传头像 选取本地图片 上传代码.html5点击上传头像,图片上传代码 代码结构 1. HTML代码 上传头像 //获取上传按钮 var input1 = document. ...

  6. 手机端移动端的前端原生js裁剪图片上传

    手机端移动端的前端原生js裁剪图片上传 选择头像时裁剪上传,确保图片是个正方形,不会出现压扁拉伸的现象 效果图 原理很简单,其实就是用canvas截图出来而已,只是要对比例做一下处理. <!-- ...

  7. html上传图片裁剪,基于HTML5+JS实现本地图片裁剪并上传功能

    基于HTML5+JS实现本地图片裁剪并上传功能 2019-01-07 编程之家 https://www.jb51.cc 编程之家收集整理的这篇文章主要介绍了基于HTML5+JS实现本地图片裁剪并上传功 ...

  8. vue本地上传并预览php,vue.js 实现图片本地预览 裁剪 压缩 上传功能

    以下代码涉及 Vue 2.0 及 ES6 语法. 目标 纯 javascrpit 实现,兼容ie9及以上浏览器,在本地做好文件格式.长宽.大小的检测,减少浏览器交互. 现实是残酷的,为了兼容Ie9 还 ...

  9. Android 本地tomcat服务器接收处理手机上传的数据之案例演示

    上一篇:Android 本地tomcat服务器接收处理手机上传的数据之环境搭建     本篇基于上一篇搭建的服务器端环境,具体介绍Android真机上传数据到tomcat服务器的交互过程   场景:A ...

最新文章

  1. 删除MSI包垃圾信息工具
  2. [C语言 - 10] C语言保留字
  3. python的异步网络编程_python异步网络编程怎么使socket关闭之后立即执行一段代码?...
  4. 头条+腾讯 NLP 面经
  5. java kafka spring_Kafka——Spring集成Kafka
  6. LeetCode题解-6. ZigZag Conversion
  7. IMFI DAO World of Balatroon:土地出售即将到来!
  8. 互联网思维之迭代思维
  9. 五花八门的垂直搜索引擎
  10. matlab 剪毛刺,MATLAB消除曲线毛刺Outlier Detection and Removal [hampel]
  11. python common很久不用我都忘了一些函数了,给boss添麻烦了
  12. 基础会计学习笔记8-过账和试算平衡
  13. Excel中ISEVEN函数用法之判断数值奇偶性
  14. 【机器学习】李宏毅-预测PM2.5
  15. 欧拉回路(欧拉路径)
  16. 关于抽象类和抽象方法
  17. [R语言]{实例}车辆车架号VIN码校验函数
  18. 用好故事思维,轻松获得人心
  19. ZOJ Gold Coins2345
  20. HTML静态网页作业(HTML+CSS)——外卖平台主题网页设计制作(8个页面)

热门文章

  1. m基于PSO粒子群优化的柔性制造系统AGV调度模型matlab仿真
  2. word怎么自动换行
  3. 面试的时候怎样自我介绍更有效果?
  4. 【对称加密与非对称加密】-- 概念、图示、优缺点
  5. 数据挖掘与数据化运营实战. 3.5 交叉销售模型
  6. HTML交叉报表制作,交叉报表- 交叉式报表-复杂报表设计教程| 快逸报表工具用户手册...
  7. ora-3136故障处理
  8. 话题中的Publisher和Subscriber
  9. 应用提交 App Store 上架被拒的原因都有哪些
  10. html5 3d引擎 星空,使用3D引擎threeJS实现星空粒子移动效果