spring boot上传文件,并限制上传文件类型、上传文件大小
在Spring Boot中,你可以使用@RestController
和@PostMapping
注解来创建一个接口,用于处理文件上传的请求。同时,你可以使用MultipartFile
接口来接收上传的文件,并使用@RequestParam
注解来绑定请求参数。
以下是一个简单的例子,展示了如何限制上传文件的类型和大小:
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
@RestController
public class FileUploadController {
private static final long MAX_FILE_SIZE = 1024 * 1024 * 5; // 5 MB
private static final String[] ALLOWED_MIME_TYPES = {"image/jpeg", "image/png"};
@PostMapping("/upload")
public ResponseEntity<?> uploadFile(@RequestParam("file") MultipartFile file) {
if (file.isEmpty()) {
return ResponseEntity.badRequest().body("文件不能为空");
}
if (file.getSize() > MAX_FILE_SIZE) {
return ResponseEntity.badRequest().body("文件大小超出限制");
}
if (!isAllowedFileType(file.getContentType())) {
return ResponseEntity.badRequest().body("不支持的文件类型");
}
// 处理文件上传的逻辑...
return ResponseEntity.ok("文件上传成功");
}
private boolean isAllowedFileType(String contentType) {
for (String type : ALLOWED_MIME_TYPES) {
if (type.equals(contentType)) {
return true;
}
}
return false;
}
}
在这个例子中,MAX_FILE_SIZE
定义了文件大小的最大限制,ALLOWED_MIME_TYPES
定义了允许上传的文件类型。isAllowedFileType
方法用于检查上传文件的类型是否被允许。如果文件不满足这些条件,将返回相应的错误信息。
确保你的Spring Boot应用配置了multipart file的上传限制,在application.properties
或application.yml
中可以设置如下配置:
# application.properties
spring.servlet.multipart.max-file-size=5MB
spring.servlet.multipart.max-request-size=5MB
或者使用YAML格式:
# application.yml
spring:
servlet:
multipart:
max-file-size: 5MB
max-request-size: 5MB
这些配置会限制整个请求体的大小和单个文件的大小。
评论已关闭