SpringBoot实现文件上传
前端必要的设置
<form role="form" th:action="@{/upload}" method="post" enctype="multipart/form-data">
单文件上传
<input type="file" name="headerImg" id="exampleInputFile">
多文件上传
<input type="file" name="photos" multiple>
后台接收
@PostMapping("/upload")
public String upload(@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);
File file = new File("D:\\vivian\\");
if(!file.exists()){
file.mkdirs();
}
if(!headerImg.isEmpty()){
String originalFilename = headerImg.getOriginalFilename();
headerImg.transferTo(new File(file.getName() + originalFilename));
}
//这样判断的原因是:即使photos没有上传文件,那么也会有一个存在,
// 但是文件名是空的,也就是是其实是没有文件的,通过这样过滤掉
if(!photos[0].isEmpty()){
for (MultipartFile photo : photos) {
String originalFilename = photo.getOriginalFilename();
photo.transferTo(new File(file.getName() + originalFilename));
}
}
return "index";
}
一些必要的设置
== 因为默认上传单个文件的大小最大只有1M ==
所以需要修改设置
spring:
servlet:
multipart:
max-file-size: 10MB #单个文件的大小
max-request-size: 100MB # 整个请求要求的大小