Spring Boot 中 MultipartFile 转 File 对象的四种实现方案
1. 前言
在开发 Spring Boot Web 应用中,文件上传通常通过 MultipartFile 接口接收。但有时我们需要将 MultipartFile 转成标准的 java.io.File 对象,便于与依赖本地文件 API 的第三方库(如 Apache POI、Tika、图像处理库等)集成,也便于做临时文件存储与后续处理。

你可能会有以下需求:
第三方库依赖:如某些 PDF 解析、办公室文档处理 API 只接受 File 对象或文件路径 文件处理:对上传文件进行临时处理、压缩、分析 临时缓存:需要将上传文件缓存在本地以做异步处理、批量扫描等
那么我们就需要将 MultipartFile 转换为 java.io.File 对象,本文将讲解常见的四种方案。
2. 常见 4 种转换方案
2.1 使用 transferTo() 方法
transferTo(File) — Spring 推荐,最简洁高效。
此方式直接调用 MultipartFile.transferTo(dest),将上传内容写入指定文件。
public File convertByTransferTo(MultipartFile multipartFile, String destPath) throws IOException {
File destFile = new File(destPath);
// 如果目标目录不存在,则创建
File parent = destFile.getParentFile();
if (parent != null && !parent.exists()) {
parent.mkdirs();
}
multipartFile.transferTo(destFile);
return destFile;
}
优点:代码简洁,直接写入;
缺点:必须确保 MultipartFile 未被多次使用,且目标路径可写。
2.2 使用 FileUtils.copyInputStreamToFile
需要引入 Apache Commons IO 依赖。
<!-- 在 pom.xml 中添加依赖 -->
<>
commons-io
commons-io
2.11.0


