本文主要通过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";
}

验证结果

最后在磁盘中找到了上传的文件