Commons FileUpload 1.2.1与Commons IO 1.4.0文件上传组件
文件上传的老搭档,非 commons-fileupload-1.2.1.jar 和 commons-io-1.4.0.jar 莫属了。SpringMVC 做上传功能的时候,基本就是靠它俩。
commons-fileupload 负责拆解上传求,把文件和其他字段分门别类地;commons-io 则是你操作文件时的好帮手,各种复制、读取、写入,简直不要太方便。
你要是写个上传接口,比如用 @RequestParam("file") MultipartFile file
,SpringMVC 就会偷偷用这两个 jar 包来搞定底层的。你只需要关心:文件有没有上传成功,要不要验证大小和类型。
而且 commons-fileupload 还挺贴心的,能根据文件大小自动选择放内存还是硬盘,避免撑爆内存。想配置最大上传大小、临时目录?也支持,灵活性高。
commons-io 就更全能了,文件复制、流操作、目录监听全都能干。像 FileUtils.copyFile()
或 IOUtils.toByteArray()
这些方法,用一次就离不开。
代码也不复杂,像下面这个控制器,逻辑就是把上传文件保存到 uploads
目录:
@PostMapping("/upload")
public String handleFileUpload(@RequestParam("file") MultipartFile file) {
if (!file.isEmpty()) {
try {
byte[] bytes = file.getBytes();
File uploadDir = new File("uploads");
if (!uploadDir.exists()) uploadDir.mkdirs();
File serverFile = new File(uploadDir, file.getOriginalFilename());
BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(serverFile));
stream.write(bytes);
stream.close();
return "文件已成功上传";
} catch (IOException e) {
return "文件上传失败:" + e.getMessage();
}
} else {
return "至少选择一个文件";
}
}
如果你项目里还没引这俩 jar,建议尽快加上,是上传功能刚刚搭建的时候,能省不少麻烦。
springmvc.commons.fileupload.rar
预估大小:2个文件
springmvc.commons.fileupload
文件夹
commons.fileupload-1.2.1.jar
56KB
commons.io-1.4.0.jar
108KB
143.42KB
文件大小:
评论区