在平时的业务开发过程中,文件的上传和下载是很常见的场景。Spring MVC为文件上传提供了直接的支持,这种支持是由MultipartResolver实现的。Spring MVC使用Apache Commons FileUpload 技术实现了一个MultipartResolver实现类----CommonsMultipartResolver。因此Spring MVC的文件上传需要依赖Apache Commons FileUpload的组件。
Spring Mvc会将上传的文件绑定到MultipartFile对象中。MultipartFile提供了获取上传文件内容、文件名等方法。通过transferTo()方法还可以将文件存储到本地。
MultipartFile对象常见方法表:
方法名 | 作用 |
---|---|
byte[] getBytes() | 获取文件数据 |
String getContentType[] | 获取文件MIME类型,如image/jpeg等 |
InputStream getInputStream() | 获取文件流 |
String getName() | 获取表单中文件组件的名字 |
String getOriginalFilename() | 获取上传文件的原名 |
Long getSize() | 获取文件的字节大小,单位为byte |
boolean isEmpty() | 检测是否有上传文件 |
void transferTo(File dest) | 将上传文件保存到一个目录文件中 |
获取上传文件并保存本地示例:
private String dirPath = "D:/source";
public void fileUpload(MultipartFile picFile,String folderName) throws IOException{
//获取文件原始名以获取它的文件后缀
String fileName = picFile.getOriginalFilename();
//获取"."后的后缀名
String suffix = fileName.substring(fileName.lastIndexOf("."));
//使用UUID.randomUUID()生成一个全局唯一的字符串
fileName = UUID.randomUUID()+suffix;
File dirFile = new File(dirPath);
if (!dirFile.exists()){
dirFile.mkdirs();
}
String filePath = dirPath + "/"+folderName + "/"+ fileName;
File dirFile2=new File(filePath);
if (!dirFile2.exists()){
dirFile2.mkdirs();
}
//将文件保存到本地
picFile.transferTo(dirFile2);
}