简介
- java中文件上传共涉及两个组件:CommonsMultiPartResolver和StandardServletMultipartResolver
- Spring Boot提供的文件上传自动化配置类MultipartAutoCon:figuration 中,默认也是采用 StandardServletMultipartResolver 因此,在 Spring Boot 中上传文件甚至可以 做到零配置。下面来看具体上传过程。
单文件上传示例:
(1)创建一个是上传页面,上传接口是/upload,请求方法是post
(2)后端controller
@RestController
public class FileUploadController(){
// 设置上传文件的日期
SimpleDateFromat sdf = new SimpleDateFormat("yy-MM-dd");
postMapping("/upload")
public String upload(MultiPartFile uploadFile, HttpServletRequest req){
// 规划上传文件的保存路径为项目运行目录下的uploadFile文件夹,并在文件夹中通过日期对上
// 传的文件归类
String realPath = req.getSession().getServletContext().getRealPath("/uploadFile/");
String formatDate = sdf.format(new Date());
File foler = new File(realPath + format);
if(!folder.isDirectory()){
folder.mkdirs();
}
// 文件重命名,避免文件重名
String oldName = uploadFile.getOriginalFilename();
String newName = UUID.randomUUID().toString() + oldName.subString(oldName.lastIndexOf("."), oldName.length());
//保存文件并生成上传文件的访问路径返回
try{
uploadFile.transferTo(new File(folder, newName));
String filePath = req.getScheme() + "://" + req.getServerName() + ":" + req.getServerPort() + "/uploadFile/" + formatDate + newName;
return filePath;
}catch(IOException e){
e.printStackTrace();
}
retun "upload failed";
}
}
(3)测试
在浏览器中输入http://localhost:8080/upload.html
上传成功之后返回上传文件的访问路径
(4)如果开发者需要对上传细节进行配置,在配置文件中添加代码