MultipartFile 是 Spring Framework 的一部分,它是一个接口,用于处理 HTTP 请求中的文件上传。这个接口提供了访问上传文件的内容、元数据和输入流的方法。
MultipartFile 的主要方法
返回上传文件的 MIME 类型
getContentType();
返回上传文件在客户端的原始文件名
getOriginalFilename():
返回文件的大小,单位为字节
getSize()
指示上传的文件是否为空
isEmpty()
将上传的文件保存到指定的 File
路径
transferTo(File dest)
将上传的文件保存到指定的 Path
路径
transferTo(Path dest)
返回文件内容的 InputStream
,可以用于读取文件数据
getInputStream()
返回文件内容的字节数组
getBytes()
代码案例
以下是一个使用 Spring MVC 的控制器示例,它处理文件上传请求
java
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.http.ResponseEntity;
import org.springframework.http.HttpStatus;
import java.io.File;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
@RestController
@RequestMapping("/api/files")
public class FileUploadController {
@PostMapping("/upload")
public ResponseEntity<String> uploadFile(@RequestParam("file") MultipartFile multipartFile) {
if (multipartFile.isEmpty()) {
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("文件不能为空");
}
try {
// 构建文件保存路径
String fileName = multipartFile.getOriginalFilename();
Path path = Paths.get("uploads").resolve(Paths.get(fileName));
File destinationFile = path.toFile();
// 确保目录存在
if (!destinationFile.getParentFile().exists()) {
destinationFile.getParentFile().mkdirs();
}
// 保存文件
multipartFile.transferTo(destinationFile);
return ResponseEntity.ok("文件上传成功,保存路径:" + destinationFile.getAbsolutePath());
} catch (IOException e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("文件上传失败:" + e.getMessage());
}
}
}