SpringBoot单文件上传&多文件上传
通过上传文件,我们可以实现:
- 在线文件存储:用户可以通过Web应用程序上传和管理自己的文件。
- 图片上传:用户可以通过Web应用程序上传图片,然后使用这些图片。
- 文件分享:用户可以通过Web应用程序上传文件,然后与其他人共享。
- 资料库:管理员可以通过Web应用程序上传文件到资料库,以便其他人可以下载和使用这些文件。
Spring Boot文件上传功能为Web应用程序提供了一种方便和高效的方法,以管理文件并使用它们。
单文件上传
Spring Boot支持使用MultipartFile接口上传文件。
- 在Controller中添加一个文件上传的请求处理方法,并使用@RequestParam注解将文件作为参数传递。
- 在Controller方法中使用MultipartFile的transferTo()方法将文件保存到指定目录。
- 在配置文件中配置文件上传的路径。
@PostMapping("/upload")
public String handleFileUpload(@RequestParam("file") MultipartFile file) {
String message = "";
if (file.isEmpty()) {
message = "请选择文件上传";
return message;
}
try {
byte[] bytes = file.getBytes();
Path path = Paths.get(UPLOADED_FOLDER + file.getOriginalFilename());
Files.write(path, bytes);
message = "上传成功 '" + file.getOriginalFilename() + "'";
} catch (IOException e) {
e.printStackTrace();
}
return message;
}
多文件上传且传递额外参数
在Spring Boot中批量上传文件,并且能接收参数。
- 在Controller中添加一个批量文件上传的请求处理方法,并使用@RequestParam注解将文件和其他参数作为参数传递。
- 在Controller方法中使用MultipartFile数组获取上传的文件,并对每个文件进行校验和处理,例如判断文件类型、大小等。
- 如果文件校验通过,则使用MultipartFile的transferTo()方法将文件保存到指定目录。
@PostMapping("/batch")
public String handleFileUpload(@RequestParam("files") MultipartFile[] files,
@RequestParam("param1") String param1,
@RequestParam("param2") String param2) {
String message = "";
if (files.length == 0) {
message = "请选择文件上传";
return message;
}
for (MultipartFile file : files) {
try {
String originalFilename = file.getOriginalFilename();
String extension = originalFilename.substring(originalFilename.lastIndexOf(".") + 1);
if (!ALLOWED_EXTENSIONS.contains(extension)) {
message = "未知文件类型. 允许 PNG 和 JPG";
return message;
}
if (file.getSize() > MAX_SIZE) {
message = "文件大小不符合. 最大容量为 2MB";
return "message;
}
byte[] bytes = file.getBytes();
Path path = Paths.get(UPLOADED_FOLDER + originalFilename);
Files.write(path, bytes);
message = "上传成功 '" + originalFilename + "'";
} catch (IOException e) {
e.printStackTrace();
}
}
return message;
}
常用文件类型分类及其对应的拓展名
- 文本文件:.txt、.doc、.docx、.pdf
- 图像文件:.jpg、.jpeg、.png、.gif、.bmp
- 视频文件:.mp4、.avi、.mov、.mkv、.flv
- 音频文件:.mp3、.wav、.wma、.m4a
- 压缩文件:.zip、.rar、.tar、.gz
- 程序文件:.exe、.jar、.apk
- 表格文件:.xls、.xlsx、.csv
- 网页文件:.html、.htm、.css、.js
- 邮件文件:.eml、.pst
开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 1 天,点击查看活动详情