1、添加相关依赖:
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.2</version>
</dependency>
2、在 mvc.xml 中进行配置:
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!--上传文件的最大大小-->
<property name="maxUploadSize" value="17367648787"/>
<!-- 设置文件放入临时文件夹的最大大小限制
此值是阈值,低于此值,保存在内存中,高于此值,生成在硬盘上的文件
-->
<property name="maxInMemorySize" value="4096"/>
<!-- 上传文件的编码 -->
<property name="defaultEncoding" value="UTF-8"/>
</bean>
或 java 配置类中进行配置:
@Bean
public CommonsMultipartResolver multipartResolver(){
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
// 设置允许文件上传的最大尺寸
multipartResolver.setMaxUploadSize(104857600L);
// 设置文件放入临时文件夹的最大大小限制
// 此值是阈值,低于此值,保存在内存中,高于此值,生成在硬盘上的文件
multipartResolver.setMaxInMemorySize(4096);
return multipartResolver;
}
3、实现文件上传:
前端页面:
<form action="/upload" enctype="multipart/form-data" method="post">
请选择文件:<input type="file" name="file">
<input type="submit" value="上传">
</form>
控制器:
@PostMapping(value = "/upload",produces = MediaType.MULTIPART_FORM_DATA_VALUE)
public String upload(@RequestParam("file") MultipartFile file, HttpServletRequest request) {
boolean success = false;
// 判断文件是否为空
if (!file.isEmpty()) {
// 获取项目根目录所在的绝对路径
String path = request.getServletContext().getRealPath("/");
// 设置上传的文件存放目录
File uploadFile = new File(path + "/upload");
// 判断文件目录是否存在,不存在则新建
if (!uploadFile.exists()) {
// 新建目录
uploadFile.mkdir();
}
// 获取上传文件名
String originalFilename = file.getOriginalFilename();
// 获取上传文件的后缀
String suffix = originalFilename.substring(originalFilename.indexOf("."));
// 生成新文件名
String filename = System.currentTimeMillis() + suffix;
// 上传文件
try {
file.transferTo(new File(uploadFile, filename));
success = true;
} catch (IOException e) {
e.printStackTrace();
}
}
return "文件上传:" + success;
}