一、单文件上传
@RequestMapping("fileUpload")
@ResponseBody
public String fileUpload(@RequestParam("fileName") MultipartFile file) {
if (file.isEmpty()) {
return "false";
}
String fileName = file.getOriginalFilename();
int size = (int) file.getSize();
System.out.println(fileName + "-->" + size);
//文件保存路径
String path = "D:/poi";
File dest = new File(path + "/" + fileName);
if (!dest.getParentFile().exists()) { //判断文件父目录是否存在
dest.getParentFile().mkdir();
}
try {
file.transferTo(dest); //保存文件
return "true";
} catch (Exception e) {
e.printStackTrace();
return "false";
}
}
二、多文件上传
@RequestMapping(value = "multfileUpload", method = RequestMethod.POST)
@ResponseBody
public String multfileUpload(HttpServletRequest request) {
List<MultipartFile> files = ((MultipartHttpServletRequest) request).getFiles("fileName");
if (files.isEmpty()) {
return "false";
}
String path = "D:/poi/word";
for (MultipartFile file : files) {
String fileName = file.getOriginalFilename();
int size = (int) file.getSize();
System.out.println(fileName + "-->" + size);
if (file.isEmpty()) {
return "false";
} else {
File dest = new File(path + "/" + fileName);
if (!dest.getParentFile().exists()) { //判断文件父目录是否存在
dest.getParentFile().mkdir();
return "true";
}
try {
file.transferTo(dest);
} catch (Exception e) {
e.printStackTrace();
}
}
}
return "true";
}
三、注意事项
多文件上传可能会报错
org.apache.tomcat.util.http.fileupload.impl.FileSizeLimitExceededException: The field fileName exceeds its maximum permitted size of xxxx bytes.
解决方法:设置上传文件的大小限制
设置方式有两种
1、配置application.yml文件
spring:
servlet:
multipart:
#设置单个文件大小
max-file-size: 50MB
#设置单次请求文件的总大小
max-request-size: 50MB
2、书写配置文件
@Configuration
public class FileConfig {
@Bean
public MultipartConfigElement multipartConfigElement(){
MultipartConfigFactory factory = new MultipartConfigFactory();
//允许上传文件的最大值
factory.setMaxFileSize(DataSize.parse("50MB")); //KB,MB
/// 设置总上传数据总大小
factory.setMaxRequestSize(DataSize.parse("50MB"));
return factory.createMultipartConfig();
}
}