本文主要通过gradle构建Springboot项目并使用CommonsMultipartResolver实现文件上传。
添加相关依赖
在build.gradle文件内添加下列依赖
// https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-thymeleaf compile group: 'org.springframework.boot', name: 'spring-boot-starter-thymeleaf', version: '1.0.2.RELEASE' // https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload compile group: 'commons-fileupload', name: 'commons-fileupload', version: '1.3.3' //CommonsMultipartResolver依赖此jar包
基本页面
创建两个简单的html页面,实现文件上传和页面跳转。
在upload.html文件中
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8"/>
<title>Title</title>
</head>
<body>
<form th:action="@{/upload}" method="post" enctype="multipart/form-data">
<input type="file" name="file"/>
<input type="submit"/>
</form>
</body>
</html>
在result.html文件中
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"/> <title>文件上传</title> </head> <body> <h1>上传成功</h1> </body> </html>
配置multipart解析器
@Bean
public MultipartResolver multipartResolver() throws IOException {
CommonsMultipartResolver commonsMultipartResolver=new CommonsMultipartResolver();
commonsMultipartResolver.setUploadTempDir(new FileSystemResource("/tmp"));//设置临时存储路径
commonsMultipartResolver.setMaxUploadSize(1024*1024*5);//最大上传容量5MB
return commonsMultipartResolver;
}
写控制器方法
@RequestMapping(value = "/upload",method = POST)
public String uploadfiles(@RequestParam MultipartFile file,HttpServletRequest req) throws IOException {
file.transferTo(new File("/"+file.getOriginalFilename()));
return "result";
}
验证结果
最后在磁盘中找到了上传的文件