第一步导入依赖
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.11.0</version>
</dependency>
第二步 前端写法
<form action="/add" enctype="multipart/form-data" method="post">
<input type="file" id="fil" name="file" value=""/>
<span id="text"></span>
<button type="submit">提交</button>
</form>
第三步 后端接收
@PostMapping("add")
@ResponseBody
public Object infill(@RequestParam("file")MultipartFile file){
return MyUnits.upload(file);
}
第四步方法实现
package com.example.mybatis2;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
/*
* 封装工具类
*
* */
public class MyUnits {
public static Object upload(MultipartFile file){
if(file.isEmpty()){
return "false";
}
String fileName = file.getOriginalFilename();
int size = (int) file.getSize();
System.out.println(fileName + "-->" + size);
String path = "F:/test" ;
File dest = new File(path + "/" + fileName);
if(!dest.getParentFile().exists()){ //判断文件父目录是否存在
dest.getParentFile().mkdir();
}
try {
file.transferTo(dest); //保存文件
return "true";
} catch (IllegalStateException e) {
e.printStackTrace();
return "false";
} catch (IOException e) {
e.printStackTrace();
return "false";
}
}
}
第五步 设置上传文件大小范围
启动类
@Bean
public MultipartConfigElement multipartConfigElement() {
MultipartConfigFactory factory = new MultipartConfigFactory();
//单个文件最大
factory.setMaxFileSize(DataSize.ofMegabytes(220));//MB
//factory.setMaxFileSize(DataSize.ofKilobytes(80)); KB
//factory.setMaxFileSize(DataSize.ofGigabytes(80)); Gb
//总大小
factory.setMaxRequestSize(DataSize.ofMegabytes(220));
return factory.createMultipartConfig();
}
另外 常用函数
getBytes()
返回file的二进制数组形式
getContentType()
返回String表示文件类型
isEmpty()
判断是否为空
getInputStream()
new一个ByteArrayInputStream(字节数组输入流)的对象,返回InputStream。getName()
返回multipart form参数的名称getOriginalFilename() 返回客户端文件系统中的原始文件名,它可能包含路径信息。
getResource()
获得一个MultipartFile对象getSize()
返回content数组的大小,这个很好理解transferTo(File dest)
将接收到的文件传输到给定的目标文件。transferTo(Path dest)
将接收到的文件传输到给定的目标文件。