1、controller控制类

@Api(value = "用户信息接口", tags = {"用户信息接口相关接口"})
@RestController
@RequestMapping("userInfo")
public class CenterUserController extends BaseController {@Autowiredprivate CenterUserService centerUserService;@Autowiredprivate FileUpload fileUpload;@ApiOperation(value = "用户头像修改", notes = "用户头像修改")@PostMapping("uploadFace")public JSONResult uploadFace(@ApiParam(name = "userId", value = "用户id", required = true)@RequestParam String userId,@ApiParam(name = "file", value = "用户头像", required = true)MultipartFile file,HttpServletRequest request,HttpServletResponse response){//定义头像保存的地址
//        String fileSpace = IMAGE_USER_FACE_LOCATION;String fileSpace = fileUpload.getImageUserFaceLocation();//在路径上为每一个用户增加一个userId文件夹 /{userId},用于区分不同用户上传String uploadPathPrefix = File.separator + userId;FileOutputStream fileOutputStream = null;try {//开始文件上传if (file != null){//获得文件的上传名称String fileName = file.getOriginalFilename();if (StringUtils.isNotBlank(fileName)){//文件重命名String[] fileNameArr = fileName.split("\\.");//获取文件的后缀名String suffix = fileNameArr[fileNameArr.length - 1];//防止黑客攻击,上传 .sh .phpif (!suffix.equalsIgnoreCase("png") &&!suffix.equalsIgnoreCase("jpg") &&!suffix.equalsIgnoreCase("jpeg")){return JSONResult.errorMsg("图片格式不正确!仅支持.png .jpg .jpeg");}//文件名称重组 覆盖式上传。 如果要使用增量式:额外拼接当前时间//face-{userId}.pngString newFileName = "face-" + userId+ "." + suffix;//上传的头像最终保存的位置String finalFacePath = fileSpace + uploadPathPrefix + File.separator + newFileName;//用于提供web服务的访问地址uploadPathPrefix += ("/" + newFileName);File outFile = new File(finalFacePath);//如果父级文件夹不存在,则创建if (outFile.getParentFile() != null){//创建文件夹outFile.getParentFile().mkdirs();}//文件输出保存到目录fileOutputStream = new FileOutputStream(outFile);InputStream inputStream = file.getInputStream();IOUtils.copy(inputStream, fileOutputStream);}}}catch (Exception e){e.printStackTrace();}finally {try {if (fileOutputStream != null){fileOutputStream.flush();fileOutputStream.close();}} catch (IOException e) {e.printStackTrace();}}//获取服务端图片地址String imageServerUrl = fileUpload.getImageServerUrl();//web服务端最终访问地址//由于浏览器可能存在缓存的情况,所有在这里,我们可以加上一个时间戳来保证更新的图片及时刷新String finalServerFaceUrl = imageServerUrl + uploadPathPrefix+ "?t=" + DateUtil.getCurrentDateString(DateUtil.DATE_PATTERN);//更新用户头像到数据库Users userResult = centerUserService.updateUserFace(userId, finalServerFaceUrl);//更新cookieuserResult = setNullProperty(userResult);CookieUtils.setCookie(request, response, "user", JsonUtils.objectToJson(userResult),true);//TODO 后续要改,增加令牌token,会整合进redis,分布式会话return JSONResult.ok();}
}

2、图像上传地址类:FileUpload.java

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;@Component
@ConfigurationProperties(prefix = "file") //属性前缀
@PropertySource("classpath:file-upload-dev.properties") //配置文件地址
public class FileUpload {private String imageUserFaceLocation;private String imageServerUrl;public String getImageUserFaceLocation() {return imageUserFaceLocation;}public void setImageUserFaceLocation(String imageUserFaceLocation) {this.imageUserFaceLocation = imageUserFaceLocation;}public String getImageServerUrl() {return imageServerUrl;}public void setImageServerUrl(String imageServerUrl) {this.imageServerUrl = imageServerUrl;}
}

3、将配置文件中的具体地址,通过注释传入FileUpload.java定义的属性中。故下面是具体地址配置类

#开发环境
file.imageUserFaceLocation = D:\\src\\photo
file.imageServerUrl = http://localhost:8088

文件位置

用户头像上传(自用)相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  8. Android用户头像上传

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

  9. 用户头像上传到服务器

    每个应用都有这样的功能,在我的界面,需要修改用户头像(拍照,选择本地),将图片上传到服务器. 这就涉及到了好几个问题: 1.现在市面上好多手机已经是7.0系统,这里我们就要注意一些兼容处理,6.0动态 ...

最新文章

  1. python均线斜率_一根20日均线闯天下?——量化回测“压箱底指标”
  2. mfc实现秒表小项目
  3. [css] rgba()和opacity这两个的透明效果有什么区别呢?
  4. 大屏监控系统实战(5)-父工程搭建及前端相关配置
  5. MTK 驱动开发(32)---Sensor 移植及调试2
  6. 史上最便宜Model 3开售!降价3万 468公里续航国产特斯拉开回家
  7. mysql-front5.1的注册码
  8. Hadoop架构中各个集群在开发中的作用
  9. python——zip()、map()、enumerate()、filter()、apply函数
  10. c语言二级题库中会有错题吗,二级C语言题库-改错题
  11. vue 钉钉授权第三方WEB网站扫码登录功能
  12. 如何将NFC读卡器库移植到Kinetis K64F微控制器
  13. 小程序引入UI 组件库
  14. php 变量加的作用是什么,php变量的定义和作用是什么 - php完全自学手册 - php中文网手册...
  15. N-gage QD等S60 V1.2机型C盘减肥80K的办法(超越3600KB)
  16. 欧几里得几何(1)Alpha
  17. Scaling Up Your Kernels to 31x31: Revisiting Large Kernel Design in CNNs
  18. 什么是姿态角(Euler角)pitch yaw roll
  19. 数据的黑暗陷阱是什么?——你想要一匹更快的马,还是一辆汽车?
  20. php制作医院预约电子就诊卡

热门文章

  1. 旅游评论情感分析(2)---前期调查总结
  2. 旅游评论情感分析(1)---爬虫(json篇)
  3. Hadoop集群搭建(所需软件安装包已上传发布)
  4. 基于信创运维平台,实现国产化网络自动巡检
  5. 基于Nonebot2搭建QQ机器人(二):插件使用
  6. 设计模式之浅浅的理解桥接模式
  7. 【python与数据分析】CH3 python序列结构补充——字符串
  8. 地产AR模拟看房软件开发
  9. 前端生产环境调试工具sourcemap的使用
  10. 树(前序,中序,后序)