springBoot项目-用户修改头像

控制层:

 
//设置上传文件的最大值
public static final int AVATAR_MAX_SIZE=10*1024*1024;// 10MB Byte字节

//限制上传文件的类型
public static final List<String> AVATAR_TYPE=new ArrayList<>();
//集合初始化 静态代码块,随着类的加载而加载,只加载一次
static {
AVATAR_TYPE.add("image/jpeg");
AVATAR_TYPE.add("image/png");
AVATAR_TYPE.add("image/bmp");
AVATAR_TYPE.add("image/gif");
}

/**
* 文件上传要求form表单的请求方式必须为post,并且添加属性enctype="multipart/form-data" * SpringMVC中将上传的文件封装到MultipartFile对象中,通过此对象可以获取文件相关信息 * * MultipartFile接口是SpringMVC提供的一个接口,这个接口为我们包装了 * 获取文件类型的数据(任何类型的file都可以接收),SpringBoot它又整合了 * SpringMVC,只需要在处理请求的方法参数列表上声明一个参数类型为 MultipartFile * 的参数,然后SpringBoot自动将传递给服务器的文件数据赋值给这个参数 * * @RequestParam 表示请求中的参数,将请求中的的参数注入请求处理方法的某个参数上 * 如果名称不一致则可以使用@RequestParam注解进行标记和映射 * @param session * @param file * @return */ @RequestMapping("/change_avatar") public JsonResult<String> changeAvatar(HttpSession session, @RequestParam("file") MultipartFile file) { if(file.isEmpty()) { throw new FileEmptyException("文件为空"); } if(file.getSize()>AVATAR_MAX_SIZE) { throw new FileSizeException("文件大小超出限制"); } if(!AVATAR_TYPE.contains(file.getContentType())) { System.out.println(file.getContentType()); throw new FileTypeException("文件不符合规定类型异常"); } //获取服务器中upload目录的路径 String path = session.getServletContext().getRealPath("upload"); System.out.println(path); File dir=new File(path); if(!dir.exists()) { dir.mkdir(); //在项目的路径下新建指定目录 } //如:test.png String filename = file.getOriginalFilename();//文件名 System.out.println(filename); String suffix = filename.substring(filename.lastIndexOf("."));//获取文件后缀 .png String uuid = UUID.randomUUID().toString();//唯一通用识别码UUID--》随机生成字符串 /解决文件名相同覆盖问题 String fileFinalName=uuid+suffix;//最后生成的文件名 System.out.println(fileFinalName); String fileFinalPath=path + File.separator + fileFinalName;//上传的文件最后所在的目录 System.out.println(fileFinalPath); try { file.transferTo(new File(fileFinalPath));//file文件中数据写入到指定的文件下 } catch (IOException e) { throw new FileUploadIOException("文件上传异常"); }catch (FileStateException e) { throw new FileStateException("文件状态异常"); } Integer uid = getUidFromSession(session); String username = getUsernameFromSession(session); //返回路径为/upload/NAJBUN-JDIABEU-MCIBSVAUN-90NIN.png String avatar="/upload/"+fileFinalName;//相对路径 userService.changeAvatar(uid,avatar,username); //返回用户头像的路径给前端页面,将来用于头像展示使用 return new JsonResult<>(OK,avatar); }

 

  

posted @ 2022-04-16 21:38  Lfollow  阅读(371)  评论(0编辑  收藏  举报