欢迎浏览我的博客 获取更多精彩文章
SpringBoot整合文件上传
在SpringBoot中,经常会遇到需要上传文件的场景.所以这次就来演示一下如何在SpringBoot中结合SpringMVC实现文件上传
单个文件上传
在网页中,分为表单上传和异步上传.所谓异步上传一般来说就是通过构建FormData对象用Ajax来上传.
这两种上传方式其后端接收都是一样的.先给出后端的代码
@PostMapping("/upload")
public String upload(MultipartFile file, HttpServletRequest request) throws FileNotFoundException {
String format = dateFormat.format(new Date());
String realPath = ResourceUtils.getFile("classpath:static") + "/img" + format;
File folder = new File(realPath);
if (!folder.exists()) {
folder.mkdirs();
}
String oldName = file.getOriginalFilename();
assert oldName != null;
String newName = UUID.randomUUID().toString() + oldName.substring(oldName.lastIndexOf("."));
try {
file.transferTo(new File(folder, newName));
return request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + "/img" + format + newName;
} catch (IOException e) {
e.printStackTrace();
}
return "error";
}
这个函数中,关键是要用MultipartFile作为参数来接收文件对象
一般来说,文件都会存在文件服务器中,但是这里为了方便,先将其存在项目的包中.
我们首先获取日期,打算根据年月日来划分文件夹.然后为了上传到项目的包中,我们要用ResourceUtils.getFile(“classpath:static”)的方法来获取静态资源的文件夹位置,并构建文件存放的路径(不存在时创建).之后,要构造新的文件名,用UUID.randomUUID().toString()来实现,然后用transferTo方法将其存放