个人头像手动上传(基于Springboot的后端代码展示)

场景一:一般来说,对于微信小程序,很多时候登录的场景都是,“是否同意上传微信头像”;“获取您的用户信息”。然后我们通常都是同意的嘛。然后就会你的头像就会出现在页面固定的位置。可以说是很方便,因为微信开发平台是开放相应的API给我们的,我们可以通过第三方(微信)实现用户在自己后台登录。

场景二:但同时也存在很多个人头像手动上传的场景,比如快手平台,这样用户就可以根据自己的喜好上传和更换自己喜欢的图片,也可以不上传图片,更加地人性化。

package com.imooc.controller;import com.imooc.pojo.Users;
import com.imooc.service.UserService;
import com.imooc.utils.IMoocJSONResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;@RestController
@Api(value="用户相关业务的接口", tags= {"用户相关业务的controller"})
@RequestMapping("/user")
public class UserController extends BasicController {@Autowiredprivate UserService userService;@ApiOperation(value = "用户上传头像", notes = "用户上传头像的接口")@ApiImplicitParam(name = "userId", value = "用户id", required = true,dataType = "String", paramType = "query")@PostMapping("/uploadFace")//登录后通过userId上传头像public IMoocJSONResult uploadFace(String userId,@RequestParam("file") MultipartFile[] files) throws Exception {if (StringUtils.isBlank(userId)) {return IMoocJSONResult.errorMsg("用户id不能为空...");}// 文件保存的命名空间String fileSpace = "C:/videos_dev";// 保存到数据库中的相对路径String uploadPathDB = "/" + userId + "/face";FileOutputStream fileOutputStream = null;InputStream inputStream = null;try {if (files != null && files.length > 0) { //有头像上传/*** 上传头像默认是一个文件(下面直接取第[0]个),如果是多个就使用for循环以下的整个步骤*/String fileName = files[0].getOriginalFilename(); //获取文件的原名称if (StringUtils.isNotBlank(fileName)) {// 文件上传的最终保存路径//例:C:/imooc_videos_dev/10010/face/*.pngString finalFacePath = fileSpace + uploadPathDB + "/" + fileName;// 设置数据库保存的路径//例:/10010/face/*.pnguploadPathDB += ("/" + fileName);//打开文件File outFile = new File(finalFacePath);//getParentFile()获取抽象路径的父目录的抽象路径名if (outFile.getParentFile() != null || !outFile.getParentFile().isDirectory()) {// 创建父文件夹outFile.getParentFile().mkdirs(); //outFile.mkdirs() 就是*.png也变成了目录}fileOutputStream = new FileOutputStream(outFile);inputStream = files[0].getInputStream(); //获取文件流IOUtils.copy(inputStream, fileOutputStream);}} else {return IMoocJSONResult.errorMsg("上传出错...");}} catch (Exception e) {e.printStackTrace();return IMoocJSONResult.errorMsg("上传出错...");} finally {if (fileOutputStream != null) {fileOutputStream.flush();fileOutputStream.close();}}//下面四行代码的作用更新userId和图片的相对路径Users user = new Users();user.setId(userId);user.setFaceImage(uploadPathDB);userService.updateUserInfo(user);//返回相对路径,前端通过相对路径+静态资源映射即可获得图片,最后显示出来return IMoocJSONResult.ok(uploadPathDB);}

个人头像手动上传的后端代码展示(基于Springboot)相关推荐

  1. 文件上传——选择文件之后自动上传||文件上传的后端代码

    选择文件之后自动上传 //普通图片上传var uploadInst = upload.render({elem: '#test1', url: 'file/upload.action', accept ...

  2. ruoyi框架文件上传之后端代码测试及打印日志

    若依提供file上传工具类(可上传文件.图片等),有三个实现类,根据自己的需求选择,该功能可以实现用户上传的文件被存储到相应的磁盘上,并且返回对应的文件路径,以便后续访问下载. 测试: ruoyi打印 ...

  3. 【富文本编辑器功能】vue实现富文本编辑器Tinymce功能,保留编辑器格式文章展示在页面上【前后端代码展示,简单好用】

    前言: 这个Tinymce富文本编辑器是vue-element-admin内集成好的,使用过后体验非常不错,很简单易用.这里分享一下,同时又看到了网上帖子都没什么人写前后端同时展示的,很多人想知道编辑 ...

  4. 1小时搞定cropper.js制作头像/图片上传、裁剪、并发送至后端

    1小时搞定cropper.js制作头像/图片上传.裁剪.并发送至后端 先给大家看一下最终效果. 大多数功能都是由Cropper.js封装好的,调整并制作了: 上传图片 对图片的裁剪以及调整(旋转.缩放 ...

  5. VUE+ELEMENTUI el-upload照片墙手动上传多张图片 保存和修改功能前后端完整实现

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. VUE+ELEMENTUI el-upload照片墙手动上传多张图片 保存和修改功能前后端完整 ...

  6. canvas生成姓氏头像,上传七牛后传给后端

    canvas生成姓氏头像,上传七牛后传给后端 1.需求:像苹果手机的通讯录一样,如果没有上传头像就读取他的姓氏. 需要前端生成头像后先上传七牛,将拿到的资源id传给后端存到数据库,用于之后的信息读取 ...

  7. iview upload爬坑 之手动上传以及动态修改附带参数 附后台接受测试代码

    今天用iview 的upload 上传文件,除文件外还想传其他参数,所以需要手动控制upload 上传,看了官网手动上传例子,发现起并没有真正上传,只是延迟时间给看了看效果,官网例子如下 不想吐槽这官 ...

  8. 【Android 应用开发】使用蒲公英 SDK 收集崩溃日志信息 ( 导入依赖 | 申请 Key | 集成代码 | 清单文件配置 | 手动上传日志 | 手动检查更新 )

    文章目录 一.导入依赖 二.申请 API Key 和 FrontJS Token 三.Application 集成 PgyerSDKManager 代码 四.AndroidManifest.xml 清 ...

  9. elementui 手动上传头像

    使用elementui 照片墙,只显示一张图片,给后端传二进制格式,点击 upload 手动上传: 效果如图所示: <el-dialog title="Avatar" :vi ...

最新文章

  1. python 读取excel 表格的数据
  2. 【php7扩展开发五】函数调用
  3. Performance Co-Pilot
  4. jmeter mysql数据导出_Jmeter连接mysql
  5. java用一条语句判断一个整数是不是2的整数次方
  6. redis 下载源地址
  7. silvaco 学习笔记 2——自定义材料
  8. 深度学习环境搭建之三_离线安装无线网卡、DKMS
  9. scan VIP listener 详解
  10. 天使爱美丽经典台词语录片段对白分享
  11. php页面导出csv,使用PHP生成并导出CSV文件
  12. 杨百万:这么多年不倒 重要的是信奉落袋为安
  13. 【网络安全】新型网络犯罪攻防技术研究
  14. Camera in ROS and VISCA
  15. zigbee无线传感网技术与应用开发v2.0_物联网通讯协议——Zigbee
  16. 9月24日(周六)上海PMP备考说明会
  17. vim的常用命令使用教程
  18. 【EBO】使用OpenGL通过EBO绘制简单五角星
  19. html5加内边框,css3怎么加内边框
  20. webupload 上传插件 完美版 - 拿走直接用

热门文章

  1. LT6911C HDMI转MIPI 成熟方案提供技术支持
  2. 计算机无法启动如何修复工具栏,5种方式打开win10高级启动选项,修复电脑故障不用愁...
  3. 计算机科学与技术用惠普星15,准大学生必看的笔记本选购指南 惠普暗影精灵7满足不同专业的你...
  4. python 学习系列(3) 读取并显示图片的两种方法
  5. 解决安装macOS需要管理员账号和密码
  6. 符号大全!!!!!!
  7. 【解决办法】c# 远程服务器返回错误: (400) 错误的
  8. echarts实现饼图及横向柱状图的绘制
  9. UP主排名丨飞瓜数据B站平台充电周榜排行榜2022年1月17日-1月23日
  10. 完美世界手游如何在电脑上玩 完美世界手游模拟器教程