系统页面
前端表单
想要实现多文件上传 输入框中使用multiple
后端代码
@Slf4j
@Controller
public class FormTestController {
@PostMapping("/uploadForm")
public String uploadForm(@RequestParam("email") String email,
@RequestParam("username") String username,
@RequestPart("headerImg") MultipartFile headerImg,
@RequestPart("photos") MultipartFile[] photos) throws IOException {
log.info("email={}, username={}, headerImg={}, photos={}",
email, username, headerImg.getSize(), photos.length);
if (!headerImg.isEmpty()) {
String filename = headerImg.getOriginalFilename();
headerImg.transferTo(new File("D://" + filename));
}
if (photos.length > 0) {
for (MultipartFile photo : photos) {
if (!photo.isEmpty()) {
String filename = photo.getOriginalFilename();
photo.transferTo(new File("D://" + filename));
}
}
}
return "main";
}
}
如文件上传过大,会报错,查看源码MultipartAutoConfigration找到MultipartProperties=发现文件大小默认最大1MB 上传最大大小为10MB
可通过配置文件对文件大小以及上传大小进行修改
文件上传源码解析
- SpringBoot自动配置好了文件上传解析器-StandardServletMultipartResolver
- 通过断点调试方法 测试文件上传步骤
- 给DispathcerServlet 的 doDispatch方法打上断点
- 记录文件上传是否被解析
- 检测是否为文件上传请求 调用isMultipart方法判断
- 封装resolveMultipart并返回MutipartHttpServletRequest文件上传请求
- 参数解析器来解析请求中的文件内容封装成MultipartFile
- 将request请求的文件信息封装成一个Map
感谢观看~
?
|