3.4.2 控制层1.获取头像文件流,并保存图片;
2.将图片地址保存到用户的头像中;
3.刷新session中的用户信息;
@RequestMapping("/headImg")public String headImg(HttpSession session, @RequestParam("userHeaderImg") MultipartFile multipartFile, Map<String, String> map) throws IOException { // 获取上传的头像文件名称 String targetFileName = multipartFile.getOriginalFilename(); System.out.println("------ 上传文件名:" + targetFileName + " ------"); // 重新定义新的文件名,要保留上传文件的类型 targetFileName = UUID.randomUUID().toString().substring(0, 8) + targetFileName.substring(targetFileName.indexOf(".")); System.out.println("------ 新的文件名:" + targetFileName + " ------"); // 上传文件,要保存服务器上的真实路径中,idea项目发布,默认不会放到目标tomcat中,放在本地项目的target目录中 String realFilePath = session.getServletContext().getRealPath("img/about"); System.out.println("------ 服务器真实路径:" + realFilePath + " ------"); // 目标文件目录可能不存在,不能人为干预,必须程序主动处理 File targetFilePath = new File(realFilePath); if(!targetFilePath.exists()){ // 目标不存在,主动创建 if(targetFilePath.mkdirs()){ System.out.println("------ 上传目录创建成功 ------"); } } // 创建目标文件对象 File targetFile = new File(targetFilePath + "/" + targetFileName); // 文件上传到服务器,只需要一步,组件自动支持功能 multipartFile.transferTo(targetFile); // 数据库存入头像信息 targetFileName = "img/about/"+targetFileName; //获取当前登录用户对象 User loginUser = (User)session.getAttribute(CommConstant.SYS_SESSION_LOGINUSER); //换头像 loginUser.setUhead(targetFileName); //重置 session 中的 用户对象 session.setAttribute(CommConstant.SYS_SESSION_LOGINUSER,loginUser); // 调用 修改用户信息 方法,修改用户信息 User userForm = new User(); userForm.setUid(loginUser.getUid()); userForm.setUhead(loginUser.getUhead()); userService.modUserInfo(userForm); //放入修改成功提示信息,可以不提示(操作过后感觉,不返回效果好些,看时机需求) map.put("modUserInfoMsg","用户头像修改成功!"); return "/personCenter";}
经验总结扩展阅读
- 世界上的五大人种
- 佐助五影会谈第几集
- 动森五一活动迷宫攻略
- 支付宝蚂蚁庄园10月28日答提分享
- 主力建仓时的五大特征是什么
- 四大名山和五岳在哪
- 支付宝蚂蚁庄园10月28日答案是什么
- 如何删除支付宝的帐户明细
- 王者荣耀五杀限制时间是多久
- 如何制作梅干菜扣肉烧饼
