Commons FileUpload 1.2.1与Commons IO 1.4.0文件上传组件

文件上传的老搭档,非 commons-fileupload-1.2.1.jarcommons-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,建议尽快加上,是上传功能刚刚搭建的时候,能省不少麻烦。

rar
springmvc.commons.fileupload.rar 预估大小:2个文件
folder
springmvc.commons.fileupload 文件夹
file
commons.fileupload-1.2.1.jar 56KB
file
commons.io-1.4.0.jar 108KB
rar 文件大小:143.42KB