本文包括1、如何上传图片文件到Bmob上,2、从Bmob上下载图片文件,3、更新Bmob上的图片文件。

以下是在”个人中心”界面上,实现用户更改头像的例子。

(用户在新注册的时候会默认显示一张头像图片,等到用户打开相机拍照或从相册中选择一张图片更改头像的时候会替换原来的默认头像,之后在登陆的时候会显示用户自己更改的头像)

Bmob官方Android开发文档:

http://doc.bmob.cn/data/android/develop_doc/

找到8、文件管理 :

一、上传图片到Bmob上

1、首先要在Bmob上创建一个表

2、在Android中创建一个JavaBean类,名字和Bmob上创建的表的名字一样

public class advertisement extends BmobObject {private String name;//用户名private BmobFile Picture;//用户头像public String getName() {return name;}public void setName(String name) {this.name = name;}public BmobFile getPicture() {return Picture;}public void setPicture(BmobFile icon) {Picture = icon;}}

3、代码

在代码中我是通过打开系统相机或从相册中选择一张图片调用upload()方法上传到Bmob上的,所以imgpath是图片的地址。

关键代码:

        //上传图片到表中private void upload(String imgpath){final BmobFile bmobFile = new BmobFile(new File(imgpath));bmobFile.uploadblock(new UploadFileListener() {@Overridepublic void done(BmobException e) {if(e==null){advertisement ad = new advertisement();ad.setName(HomeFragment.current_user);//当前的用户名ad.setPicture(bmobFile);//该用户的头像图片ad.save();//bmobFile.getFileUrl()--返回的上传文件的完整地址Log.w("bbb",bmobFile.getFileUrl());Toast.makeText(getContext(),"上传文件成功:" + bmobFile.getFileUrl(),Toast.LENGTH_SHORT).show();}else{Toast.makeText(getContext(),"上传文件失败:" + e.getMessage(),Toast.LENGTH_SHORT).show();}}});}

用户名是aaa,上传的图片是all.png。

二、把图片上传到Bmob的应用文件上

图片除了可以上传到表中,还可以上传到Bmob中的素材里的应用文件上

代码:

    private void upload(String imgpath){final BmobFile bmobFile = new BmobFile(new File(imgpath));bmobFile.uploadblock(new UploadFileListener() {@Overridepublic void done(BmobException e) {if(e==null){//bmobFile.getFileUrl()--返回的上传文件的完整地址Log.w("bbb",bmobFile.getFileUrl());Toast.makeText(getContext(),"上传文件成功:" + bmobFile.getFileUrl(),Toast.LENGTH_SHORT).show();}else{Toast.makeText(getContext(),"上传文件失败:" + e.getMessage(),Toast.LENGTH_SHORT).show();}}});}

三、用户更改头像:

更改用户头像也就是把用户上传过的图片头像替换掉,但是这里会有一个问题:已上传过头像的用户可以选择替换,但是新注册、还没有上传过头像文件(此时是默认头像图片)的用户是没有办法进行替换的,必须选择上传。

所以,我在注册用户账号那里,写了上传默认头像图片的代码。每个用户注册的时候,会把用户名和默认的头像文件上传到advertisement中。

这样,用户想要更改头像的时候都可以直接调用替换头像图片的方法。

(暂时只能想到这种办法,如果有更好的办法一定要告诉我唷,谢谢!)

1、在应用文件上,上传一张图片作为默认的头像图片,在每个用户注册的时候都可以根据这张图片的uri地址来获取图片并上传到advertisement表中作为该用户的头像,方便以后用户更新头像图片的时候,直接调用更新的方法。

在上传的时候可以打印all.png的地址,方便注册的时候找到这张图。

2、每个用户刚注册的时候会在advertisement表中上传默认的头像图片和用户名。

                //在注册的时候顺便把用户的名字,系统默认的头像图片上传到advertisement表中,方便用户查询更改头像//Bmob上默认头像的地址BmobFile bmobfile =new BmobFile("all.png","","http://bmob-cdn-25638.b0.upaiyun.com/2019/05/14/6356af9b40b740579394fd717fe7eb2e.png");bmobfile.download(new DownloadFileListener() {@Overridepublic void onProgress(Integer integer, long l) {}@Overridepublic void done(String s, BmobException e) {if(e == null){//下载默认图片并长传到advertisement表中final BmobFile bmobFile = new BmobFile(new File(s));bmobFile.uploadblock(new UploadFileListener() {@Overridepublic void done(BmobException e) {if(e==null){advertisement ad = new advertisement();ad.setName(new_username);//用户名ad.setPicture(bmobFile);//默认头像图片ad.save();//bmobFile.getFileUrl()--返回的上传文件的完整地址Log.w("bbb",bmobFile.getFileUrl());Toast.makeText(RegisterActivity.this,"上传文件成功:" + bmobFile.getFileUrl(),Toast.LENGTH_SHORT).show();}else{Toast.makeText(RegisterActivity.this,"上传文件失败:" + e.getMessage(),Toast.LENGTH_SHORT).show();}}});}}});

http://bmob-cdn-25638.b0.upaiyun.com/2019/05/14/6356af9b40b740579394fd717fe7eb2e.png"是all.png的地址。

3、更新用户的头像图片:

思路:根据当前的用户名从表中查找对应ObjectId,再根据ObjectId更新(update)头像图片。(更新只能根据ObjectId)

      //更新表中对应用户的头像图片private void upload(String imgpath){final BmobFile bmobFile = new BmobFile(new File(imgpath));bmobFile.uploadblock(new UploadFileListener() {@Overridepublic void done(BmobException e) {if(e==null){BmobQuery<advertisement> query = new BmobQuery<advertisement>();query.addWhereEqualTo("name", HomeFragment.current_user);final String[] objectId = new String[1];query.findObjects(new FindListener<advertisement>() {@Overridepublic void done(List<advertisement> list, BmobException e) {if (e == null){for (advertisement ad : list){objectId[0] = ad.getObjectId();Log.w(TAG, "获取id成功"+ objectId[0]);}advertisement ad2 = new advertisement();ad2.setPicture(bmobFile);ad2.update(objectId[0], new UpdateListener() {@Overridepublic void done(BmobException e) {if (e == null){Toast.makeText(getContext(), "信息更新成功", Toast.LENGTH_SHORT).show();}else {Log.w(TAG, "失败"+e.getErrorCode());}}});}else {Log.w(TAG, "获取id失败"+e.getErrorCode());}}});//bmobFile.getFileUrl()--返回的上传文件的完整地址Log.w("bbb",bmobFile.getFileUrl());Toast.makeText(getContext(),"上传文件成功:" + bmobFile.getFileUrl(),Toast.LENGTH_SHORT).show();}else{Toast.makeText(getContext(),"上传文件失败:" + e.getMessage(),Toast.LENGTH_SHORT).show();}}});}

比如:

注册一个账号:用户名为bbb

默认头像是all.png。

更改头像:

更新成功!

四、从Bmob中下载图片

查找advertisement表中所有数据,判断每条数据的用户名(name),如果和当前用户的名字一样,则下载该用户对应的头像图片并显示。

        //下载图片BmobQuery<advertisement> query=new BmobQuery<advertisement>();query.findObjects(new FindListener<advertisement>() {@Overridepublic void done(List<advertisement> list, BmobException e) {if(e == null){show_ad(list);}else{Toast.makeText(getContext(),""+e.getMessage(),Toast.LENGTH_LONG).show();}}});
    public void show_ad(List<advertisement> list){for (advertisement ad : list){if(ad.getName() != null && HomeFragment.current_user.equals(ad.getName())){Log.w("nnn","ad.getName()==="+ad.getName()+"HomeFragment.current_user==="+HomeFragment.current_user);BmobFile icon= ad.getPicture();icon.download(new DownloadFileListener() {@Overridepublic void onProgress(Integer integer, long l) {}@Overridepublic void done(String s, BmobException e) {if(e == null){//设置圆形头像并显示h_head.setImageBitmap(round_Util.toRoundBitmap(BitmapFactory.decodeFile(s))); //根据地址解码并显示图片}}});break;}}}

Android Bmob之用户更改头像(上传图片、下载图片和更新图片)相关推荐

  1. Android加载用户头像的功能实现

    加载用户头像的过程是,首先从本地查看是否存储了用户的头像,如果有,则从本地读取后加载到ImageView中,如果没有,则去服务器下载头像保存到本地,并加载. public void initData( ...

  2. php 修改头像案例,在laravel5.2中实现点击用户头像更改头像的方法

    视图层 !!!自己下载jquery文件和ajaxfileUpload的插件 //下面用于图片上传预览功能 function setImagePreview(avalue) { var docObj=d ...

  3. Android11还能自定义相机吗,安卓用户又少了一项自由,Android 11不再支持更改默认相机程序...

    原标题:安卓用户又少了一项自由,Android 11不再支持更改默认相机程序 来源:量子位 关注前沿科技 萧萧 发自 凹非寺 量子位 报道 | 公众号 QbitAI 萧萧 发自 凹非寺 量子位 报道 ...

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

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

  5. 电脑账户头像怎么删掉_电脑用户账户头像在哪里更改?怎么更改?

    开机的时候,我们总是会看到自己的用户账号头像图片,一般的是windows默认的图片,时间长了,看起来很不舒服,那么电脑用户账户头像在哪里更改?怎么更改?下面小编就为大家详细介绍一下,一起来看看吧! 1 ...

  6. android bmob上传图片,Bmob+Android+ECharts 实现移动端数据上传与图表展示

    Bmob:后端云 全方位一体化的后端服务平台,无需再造应用后端服务 轻松拥有开发中需要的各种后端能力. ECharts:开源图表库,丰富的可视化效果,多图表类型,满足不同数据的处理需求 更多的搭配方案 ...

  7. 计算机用户登录头像怎么换,win10如何更改电脑用户头像在哪个文件夹

    升级了Win10系统后,有些用户发现原始的用户头像并不好看,那么该怎么做,才能将用户头像换成自己喜欢的呢?别着急,现在小编就来告诉你们如何更换Win10用户头像的方法. Win10更换用户头像的操作方 ...

  8. Bmob云IM实现头像更换并存入Bmob云数据库中(1.拍照替换,2.相册选择)

    看图效果如下: 1.个人资料界面 2.点击头像弹出对话框 3.点击拍照 4.切割图片,选择合适的部分 5.点击保存,头像替换完毕,下面看从相册中选择图片. 6.点击相册 7.任选一张图片 8.切割图片 ...

  9. 搜狐视频怎么更改头像

    本文播放器家园网小编给大家分享搜狐视频怎么更改头像,如果大家在使用搜狐视频过程当中遇到类似问题,欢迎阅读本文!搜狐视频具有很强的防火墙穿透能力,搜狐视频为用户在任何网络环境下收看流畅的视频节目提供了有 ...

  10. 视频直播软件开发中关于极光用户修改 [头像、昵称] 的教程

    视频直播软件开发中一定会用到推送或IM即时通讯,但是正常情况下更新用户信息只会更新数据库的信息,并不会同步更新到服务器,那么接下来我们就以极光为例,讲述该如何修改用户头像及昵称.基本步骤如下: 1.上 ...

最新文章

  1. scvmm live migration issue
  2. for循环的执行顺序
  3. 麦迪时刻的视频和图片
  4. zenmap nmap输出无显示_液晶显示器高压板坏的现象及维修思路 。
  5. CCNA--增强型内部网关路由选择协议(EIGRP)
  6. html标签缺省(自带)样式大全
  7. 如何解决Error: failed PB timebomb check
  8. spring boot http status 400_kubernetes configmap 热更新spring-boot应用
  9. 计算机图形学 opengl版本 第三版------胡事民 第四章 图形学中的向量工具
  10. java大批量文件对比_推荐 | 这 6 个代码对比工具用过的都说好!
  11. Python Tricks(十一)—— 阶乘的实现
  12. golang批量修改文件名称
  13. 云渲染服务器快吗?云渲染具体怎么用??
  14. java arraylis 删除_Java ArrayList批量删除算法分析
  15. jemter使用beanshell的几种方法
  16. ubuntu16.04无法联网
  17. Linux:删除重复文件工具fdupes
  18. 读书不能落下,《自卑与超越》 读后感
  19. PLM与ERP集成,这个头疼的问题,可以这样解决!
  20. 进度计划:GANTT图

热门文章

  1. R:应用时间序列分析--基于R(2)第二章 时间序列的预处理
  2. MPU9250调试笔记(融合磁力计计算Yaw)
  3. 【斜对称矩阵】向量的斜对称矩阵表示
  4. C# 之 LINQ(一)
  5. linux opendir php,PHP遍历目录函数opendir()、readdir()、closedir()、rewinddir()总结
  6. 【高速PCB电路设计】8.DDR模块设计实战
  7. JS小图切换大图轮播代码
  8. 北大青鸟汉字注释机内码_delphi取汉字的机内码、UniCode码
  9. 二分之一波长传输线有啥用?
  10. msfconsole漏洞扫描工具详解