1. @RequestMapping("/updateAvatar.html")
  2. public String updateHeadUrl(MultipartFile avatar, Model model, HttpSession session) throws IOException {
  3. // 文件类型限制
  4. String[] allowedType = {"image/bmp", "image/gif", "image/jpeg", "image/png"};
  5. boolean allowed = Arrays.asList(allowedType).contains(avatar.getContentType());
  6. if (!allowed) {
  7. model.addAttribute("error3","图片格式仅限bmp,jpg,png,gif~");
  8. return "editProfile";
  9. }
  10. // 图片大小限制
  11. if (avatar.getSize() > 3 * 1024 * 1024) {
  12. model.addAttribute("error3","图片大小限制在3M以下哦~");
  13. return "editProfile";
  14. }
  15. // 包含原始文件名的字符串
  16. String filename = avatar.getOriginalFilename();
  17. // 提取文件拓展名
  18. String extension = filename.substring(filename.indexOf(".") +1);
  19. String dir = context.getRealPath("/upload/avatar/");
  20.  
  21. //如果目录不存在,级联创建
  22. //.normalize()方法用于标准化路径,替换/\等问题
  23. if(!Files.exists(Paths.get(dir)))
  24. {
  25. Files.createDirectories(Paths.get(dir).normalize());
  26. }
  27. String uuid = UUID.randomUUID().toString();
  28. String webUrl = String.format("/upload/avatar/%s.%s",uuid,extension);
  29. String target = String.format("%s/%s.%s",dir,uuid,extension);
  30.  
  31. //写入文件
  32. Files.write(Paths.get(target).normalize(),avatar.getBytes());
  33.  
  34. //更新数据库中头像URL
  35. int uid = (int) session.getAttribute("uid");
  36. userService.updateHeadUrl(uid,webUrl);
  37.  
  38. return "redirect:profile.html";
  39. }

SpringMVC,SpringBoot上传文件简洁代码的更多相关文章

  1. springboot上传文件 & 不配置虚拟路径访问服务器图片 & springboot配置日期的格式化方式 & Springboot配置日期转换器

    1.    Springboot上传文件 springboot的文件上传不用配置拦截器,其上传方法与SpringMVC一样 @RequestMapping("/uploadPicture&q ...

  2. 【SpringMVC】使用SpringMVC进行上传文件!

    写在前面: 之前在上传文件的时候,使用的是commons-file-upload这个插件,非常方便,能控制每个文件的大小,总共大小,缓存,以及支持多个文件的同时上传,但是写一次上传文件的后台代码量太大 ...

  3. 基于SpringMVC的上传文件实现

    基于SpringMVC的上传文件实现 1.项目源码 源码地址:upload 2.关键代码 @RequestMapping("/upload2") public void datal ...

  4. SpringBoot上传文件到本服务器 目录与jar包同级问题

    目录 前言 原因 实现 不要忘记 最后的封装 Follow up   前言 看标题好像很简单的样子,但是针对使用jar包发布SpringBoot项目就不一样了.当你使用tomcat发布项目的时候,上传 ...

  5. SpringBoot 上传文件到linux服务器 异常java.io.FileNotFoundException: /tmp/tomcat.50898……解决方案

    SpringBoot 上传文件到linux服务器报错java.io.FileNotFoundException: /tmp/tomcat.50898-- 报错原因: 解决方法 java.io.IOEx ...

  6. springBoot上传文件时MultipartFile报空问题解决方法

    springBoot上传文件时MultipartFile报空问题解决方法 1.问题描述: 之前用spring MVC,转成spring boot之后发现上传不能用.网上参考说是spring boot已 ...

  7. SpringMVC 之 上传文件

    一.需求: 利用SpringMVC实现上传文件的功能 二.思路: 1.我们可以在SpringMVC中,通过配置一个MultipartResolver来上传文件. 2.通过MultipartFile f ...

  8. SpringMVC 学习-上传文件分解器 CommonsMultipartResolver 类

    Spring 组件 CommonsMultipartResolver 类的主要作用是配置文件上传的一些属性,也可以控制上传文件的大小. 在 springmvc-servlet.xml 配置文件中: & ...

  9. SpringBoot上传文件到本服务器 目录与jar包同级

    前言 看标题好像很简单的样子,但是针对使用jar包发布SpringBoot项目就不一样了. 当你使用tomcat发布项目的时候,上传文件存放会变得非常简单,因为你可以随意操作项目路径下的资源.但是当你 ...

随机推荐

  1. vmware 虚拟配置固定IP就无法联网 centos

    centos7虚拟机初始运行时ip是动态随机分配的 通过修改etc/sysconfig/network-scripts/ifcfg-ens33文件的配置可以设置固定的ipTYPE=EthernetPR ...

  2. windows配置mysql权限

    想要把csv里面的数据导入mysql,报错.用命令      show variables like '%secure%';   : [2019-04-08 17:04:36] [HY000][129 ...

  3. 操作mysql 中文乱码情况

    解决方法  : 在连接字符串中设置charset=utf8  即可正常添加中文字符 <add name="mtgzghEntities" connectionString=& ...

  4. httpclient发邮件

    package com.chuanglan; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.L ...

  5. JavaScript相等运算符

    ★相等运算符 相等运算符用来比较两个值是否相等 如果相等会返回true,否则返回false ㈠使用 == 来做相等运算 ⑴当使用 == 来比较两个值时,如果值的类型不同,     则会自动进行类型转换 ...

  6. Spring MVC ajax提交方式

    使用jquery的ajax的方式来提交 第一种,以json对象的形式提交 var jsonData = { "name" : "zhangsan", " ...

  7. eq(index|-index)

    eq(index|-index) 概述 获取当前链式操作中第N个jQuery对象,返回jQuery对象,当参数大于等于0时为正向选取,比如0代表第一个,1代表第二个.当参数为负数时为反向选取,比如-1 ...

  8. ZurmoCRM 可执行代码高危风险报告及修复

    鉴于目前ZumroCRM已经云端化,其开源版本的代码基本没有人维护,也没有地方提交bug清单.但相信国内有一些用户在使用这个开源的版本,下面报告一个ZumoCRM的重大风险点. 风险描述: 当用户登录 ...

  9. 2019ICPC上海网络赛 A Lightning Routing I 点分树(动态点分治)+线段树

    题意 给一颗带边权的树,有两种操作 \(C~e_i~w_i\),将第\(e_i\)条边的边权改为\(w_i\). \(Q~v_i\),询问距\(v_i\)点最远的点的距离. 分析 官方题解做法:动态维 ...

  10. 单链表之Java实现

    初次接触java,用java也写了一个链表.代码如下: import java.io.*; class Node{ public int data; //数据域 public Node next; / ...