MultipartFile
是 Spring Framework 中用于处理文件上传的接口。它代表了上传到服务器的一个文件。这个接口主要用于在处理 Web 表单上传文件时的文件操作。以下是对 MultipartFile
接口的详细介绍:
核心方法
-
getOriginalFilename()
- 说明:获取上传文件的原始文件名(即客户端文件名)。
- 返回:一个
String
类型的文件名,例如"example.txt"
。
-
getContentType()
- 说明:获取上传文件的内容类型(MIME 类型),如
"image/jpeg"
。 - 返回:一个
String
类型的 MIME 类型。
- 说明:获取上传文件的内容类型(MIME 类型),如
-
isEmpty()
- 说明:检查上传的文件是否为空文件,即没有内容。
- 返回:如果文件为空,返回
true
;否则返回false
。
-
getSize()
- 说明:获取上传文件的大小,以字节为单位。
- 返回:一个
long
类型的文件大小。
-
getBytes()
- 说明:将上传的文件内容读取为一个字节数组。
- 返回:一个
byte[]
数组,表示文件内容。
-
getInputStream()
- 说明:获取上传文件的输入流,用于从中读取文件内容。
- 返回:一个
InputStream
对象。
-
transferTo(File dest)
- 说明:将上传的文件保存到指定的
File
对象中。 - 参数:
File dest
目标文件。 - 异常:
IOException
(可能会抛出异常)。
- 说明:将上传的文件保存到指定的
用法示例
在 Spring Boot 中,处理文件上传的控制器示例如下:
@RestController
@RequestMapping("/upload")
public class FileUploadController {
@PostMapping("/single")
public ResponseEntity<String> uploadSingleFile(@RequestParam("file") MultipartFile file) {
if (file.isEmpty()) {
return ResponseEntity.badRequest().body("No file selected");
}
// 获取文件名
String fileName = file.getOriginalFilename();
// 保存文件到指定路径
try {
File destinationFile = new File("upload-dir/" + fileName);
file.transferTo(destinationFile);
return ResponseEntity.ok("File uploaded successfully");
} catch (IOException e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("File upload failed");
}
}
}
注意事项
-
依赖配置:确保在 Spring Boot 项目中配置了相关的依赖以支持文件上传功能,如
spring-boot-starter-web
。 -
文件大小限制:可以在
application.properties
或application.yml
文件中配置文件大小限制,如:spring.servlet.multipart.max-file-size=2MB spring.servlet.multipart.max-request-size=2MB
-
安全性:上传文件时应注意文件类型和内容的安全性,以避免潜在的安全风险,如恶意文件。
MultipartFile
提供了灵活的接口,使得在 Spring 应用中处理文件上传变得简单和高效。