每个应用都有这样的功能,在我的界面,需要修改用户头像(拍照,选择本地),将图片上传到服务器.

  • 这就涉及到了好几个问题:
  • 1.现在市面上好多手机已经是7.0系统,这里我们就要注意一些兼容处理,6.0动态权限,7.0文件安全
  • 2.图片的上传,这里我使用okhttp

1.最好用的拍照Utils

  • 这里我只粘贴操作的代码,具体的utils类大家可以去copy,后面我会说到
  • 这里我还用到了ios风格的底部选择框
 CropImageUtils.getInstance().openAlbum(this); //打开相册CropImageUtils.getInstance().takePhoto(this); //拍照
 @RequiresApi(api = Build.VERSION_CODES.KITKAT)@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);CropImageUtils.getInstance().onActivityResult(mContext, requestCode, resultCode, data, new CropImageUtils.OnResultListener() {@Overridepublic void takePhotoFinish(String path) {//拍照回调,去裁剪CropImageUtils.getInstance().cropPicture(mContext, path);}@Overridepublic void selectPictureFinish(String path) {//相册回调,去裁剪CropImageUtils.getInstance().cropPicture(mContext, path);}@Overridepublic void cropPictureFinish(String path) {LogUtils.d("path", path + " .....");//TODO 上传图片SpUtil.putString(mContext, GlobalVariables.USER_ICON_FILE_PATH, path);//                upload(path);}});}
/*** 上传图片到服务器** @param path*/private void upload(String path) {HashMap<String, Object> paramsMap = getMapParams(path);//TODO 1. 请求路径urlString request_url = "";MultipartBody.Builder builder = new MultipartBody.Builder();//设置类型(表单上传)builder.setType(MultipartBody.FORM);//追加参数for (String key : paramsMap.keySet()) {Object object = paramsMap.get(key);if (!(object instanceof File)) {builder.addFormDataPart(key, object.toString());} else {File file = (File) object;builder.addFormDataPart(key, file.getName(), RequestBody.create(null, file));}}//创建RequestBodyRequestBody body = builder.build();//创建Requestfinal Request request = new Request.Builder().url(request_url).post(body).build();//单独设置参数 比如读取超时时间Call call = new OkHttpClient().newBuilder().writeTimeout(50, TimeUnit.SECONDS).build().newCall(request);call.enqueue(new Callback() {@Overridepublic void onFailure(Call call, IOException e) {LogUtils.d("json", "上传失败");}@Overridepublic void onResponse(Call call, Response response) throws IOException {if (response.isSuccessful()) {String string = response.body().string();LogUtils.d("json", "上传图片成功: " + string);} else {LogUtils.d("json", "上传失败");}}});}
    //TODO 2. 添加参数private HashMap<String, Object> getMapParams(String path) {HashMap<String, Object> params = new HashMap<>();//todo 这里根据接口自己改变参数//        params.put("uid", uid);//        params.put("pwd", Encrypt.getMD5Str(pwd));//        params.put("bid", Constant.PRODUCT);//        params.put("cp", Constant.OS);//        params.put("cv", AndroidUtil.getVersionName(this));//        params.put("pkgname", this.getPackageName());//        params.put("imei", SystemUtil.getImei(this));//        params.put("imsi", SystemUtil.getImsi(this));//        params.put("netmode", SystemUtil.getNetworkName(this));//        params.put("ts", String.valueOf(System.currentTimeMillis() / 1000));File file = new File(path);if (file != null) {params.put("pic", file);}return params;}

2.结束

  • 上面只是粘贴了使用的部分代码,具体实现可以去看我上次的demo,可以完全用到你到项目中.
  • 地址: https://github.com/hh-pan/UserInfoSetting

用户头像上传到服务器相关推荐

  1. PHP+ajaxfileupload 实现用户头像上传

    今天写项目的时候需要一个让登录的用户上传头像的功能,然后上网搜了一下,发现有一个不错的Ajax插件ajaxfileupload,所以就拿来用,感觉效果不错,在这里和大家分享一下.下面将用PHP+aja ...

  2. php文件 用户头像上传代码,网页web上传用户头像代码实现(美图秀秀开放)

    网页web上传用户头像代码实现(美图秀秀开放) 在制作论坛或者一些门户社交网站的时候,经常要获取用户的头像.之前我们一般都是自己制作flash插件头像上传.或者用js来自己开发一个头像上传功能.比如有 ...

  3. Day88.七牛云: 房源图片、用户头像上传 Common-upload、Webuploader

    目录 一.七牛云存储 4.鉴权 二.开发者中心,上传.删除测试 1.添加依赖 2.代码测试 3. 封装工具类 三.房源图片上传 1. spring mvc 配置上传支持 2. house/show.h ...

  4. Java实现用户头像上传(修改默认文件大小限制)

    概述 每次说起文件上传,就不得不提一下前端的实现方式,说来也奇怪,本博主最热门的博客居然也是文件上传,3万多的访问量占了总访问量的一多半:<传统form表单提交方式的文件上传与文件存储>, ...

  5. Android开发之用户头像上传

    一,概述 本篇博客总结一下自己在开发过程中应用到的一些知识,在本篇博客中带领大家完成用户头像选择或者拍照上传,并对图片进行大小的压缩,和形状的控制,可以将用户选择到的图片裁剪成圆形上传. ok,我们开 ...

  6. SpringBoot OSS实战之用户头像上传

    文章目录 前言 OSS整合 前端 获取授权 上传图片 上传URL到服务端 完整代码 后端 图片URL接收 补充 效果演示 前言 已经开始对写接口产生厌烦了,毫无技术含量,不过也是最近把用户的比较核心的 ...

  7. Android用户头像上传

    开始写一个小的demo,完成用户圆形头像的选取,在写即将实现的效果之前我们看一下即将要实现的效果图 二,实现代码 activity_main.xml <LinearLayout xmlns:an ...

  8. 用户头像上传之 jQuery+ajax+php+预处理

    小知识: dataType:预期的服务器返回的数据类型 当设置了dataType:"json"时,后端返回了json,就自动将JSON格式字符串转换为js对象,如果后端返回了Str ...

  9. 关于用户头像上传的配置

    基于SpringMVC的文件上传 1 MultipartFile接口 MultipartFile接口常用的的API见下表: 方法 功能描述 String getOriginalFilename() 获 ...

最新文章

  1. 《Java程序员,上班那点事儿》书名的由来
  2. 201711月04日普及组 Array
  3. canal介绍和使用docker安装canal
  4. FLEXAIR 界面展示。
  5. 404、500、502等HTTP状态码介绍
  6. 信息学奥赛一本通(1126:矩阵转置)
  7. idea+selenium代码_你试过使用selenium爬虫抓取数据吗
  8. 索引栏_网站导航栏如何设置才能促使网站SEO优化更好?
  9. 一款短小精悍的日志分析工具web_log_analyse
  10. java sync 实现原理_JAVA 同步实现原理
  11. python mql4跟单_MT4本地跟单EA设置教程 -
  12. 两年数据对比柱形图_视频教程:堆积柱形图的几种变化形式
  13. 练习题︱豆瓣图书的推荐与搜索、简易版知识引擎构建(neo4j)
  14. 如何用木板做桥_木头做桥基,300年不倒(组图)
  15. 论文阅读:Reasoning about Object Affordances in a Knowledge Base Representation
  16. vivado2020报错:error when launching …vivao.bat…launcher time out“
  17. 什么是一体化管理体系
  18. 今天两位80后程序员身价超千亿 一大波快手员工财富自由
  19. 关于感染型病毒的那些事(一)
  20. 区块链测试网服务发布

热门文章

  1. Google主要产品大全
  2. 关于微信签名生成工具报错 NameNotFoundException signs is null
  3. linux网卡配置详解
  4. 使用kubeadm升级K8S
  5. stc单片机远程升级89系列
  6. Mysql共享数据库
  7. 在小公司卧薪尝胆3年,意外拿到字节offer,BAT离你其实不远!
  8. JNA Pointer结构体传递
  9. MacOS 中使用 killall kill
  10. 磁盘无法格式化怎么办?格式化硬盘以及恢复数据的方法