本文主要通过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"; }
验证结果
最后在磁盘中找到了上传的文件