Springboot2文件上传中用MultipartFile接受文件,上传报错java.io.FileNotFoundException: C:\Users\WIzarder\AppData\Local\Temp\tomcat.8080.5893235156551690444\
原因:MultipartFile在调用方法transferTo把文件上传到指定的路径后,会自动关闭这个流,后面无法再调用这个方法。因此需要用异步方法处理一下
解决:用异步方法来上传可以解决
@PostMapping("/upload")
public String upload(@RequestParam("email") String email,
@RequestParam("password") String password,
@RequestPart("headimg")MultipartFile multipartFile,
@RequestPart("lifeimg")MultipartFile[] multipartFiles) throws IOException {
int length = multipartFiles.length;
log.info("email={},password={},headImg={},lifeImg{}",email,password,multipartFile.getSize(),
multipartFiles.length);
uoloadImg(multipartFile,multipartFiles);//用异步方法来上传完美解决
return "index";
}
@Async
public void uoloadImg(MultipartFile head,MultipartFile[] photos) throws IOException {
if (photos.length > 0){
for (MultipartFile file : photos) {
if (!file.isEmpty()){
String originalFilename = file.getOriginalFilename();
file.transferTo(new File("G:\\上传图片\\"+originalFilename));
}
}
}
if (!head.isEmpty()){
String originalFilename = head.getOriginalFilename();
head.transferTo(new File("G:\\上传图片\\" + originalFilename));
}
}