添加 spring web和 thymeleaf 的依赖
在页面中添加一个表单和一个文件上传控件、一个按钮用于提交表单
一个img标签用于图片回显
- <div class="head">
-
- <div th:if="${#session.getAttribute('loginUser').headerImage==null}">
- <span><img th:src="@{/images/header.png}" width="90" height="90"/>span>
- div>
- <div th:unless="${#session.getAttribute('loginUser').headerImage==null}">
- <span><img th:src="@{|/image/${#session.getAttribute('loginUser').headerImage}|}"width="90" height="90"/>span>
- div>
- <form action="/web/loan/page/uploadHeader" method="post" enctype="multipart/form-data">
- <input type="file" value="选择头像" accept="image/*">
- <input type="submit" value="上传头像">
- form>
- div>
页面提交表单后上传图片并返回到此页面
- //获取本地文件 更新头像
- @PostMapping("/loan/page/uploadHeader")
- public String uploadHeader(MultipartFile file, HttpServletRequest request, Model model) throws IOException {
- //1.获取上传文件名字
- String fileName = file.getOriginalFilename();
- //2.通过上传文件名字截图后缀名
- String fileNameLast = fileName.substring(fileName.indexOf("."));
- //3.定义新的文件名字
- String newFileName = UUID.randomUUID().toString() + fileNameLast;
- //4.获取上传图片路径
- String path = ResourceUtils.getURL("classpath:").getPath() + "static/image/";
- File uploadPath = new File(path + newFileName);
- //5.如果上传目录不存在,创建目录
- if (!uploadPath.exists()) {
- uploadPath.mkdirs();
- }
- //6.上传文件
- file.transferTo(uploadPath);
- //7.更新 用户头像
- User user = (User) request.getSession().getAttribute(Constants.LOGIN_USER);
- user.setHeaderImage(newFileName);
- userService.insertHeaderImage(user);
-
- return "myCenter";
- }
- //更新 用户头像
- @Override
- public void insertHeaderImage(User user) {
- userMapper.updateByPrimaryKeySelective(user);
- }

添加上传文件大小的控制
- #单个文件上传的最大值
- spring.servlet.multipart.max-file-size=5MB
- #上传文件总的最大值
- spring.servlet.multipart.max-request-size=10MB