Spring 上传文件
🏷️ Spring
官方 Guide:Uploading Files 下载代码 (Guide 中贴出来的代码不全,直接使用下载的代码即可)(如果使用 IDEA 开发,打开代码会报错,参照【Maven】IDEA 自动重置 Language level 的解决办法)
页面使用 input file
控件选择文件,name
属性为【file
】,后面会用到。
html
<form method="POST" enctype="multipart/form-data" action="/">
<table>
<tr><td>File to upload:</td><td><input type="file" name="file" /></td></tr>
<tr><td></td><td><input type="submit" value="Upload" /></td></tr>
</table>
</form>
1
2
3
4
5
6
2
3
4
5
6
控制器的代码( @RequestParam("file")
中的参数就是上面的控件的 name
属性值。参数为 MultipartFile
类型。)
java
@PostMapping("/")
public String handleFileUpload(@RequestParam("file") MultipartFile file,
RedirectAttributes redirectAttributes) {
storageService.store(file);
redirectAttributes.addFlashAttribute("message",
"You successfully uploaded " + file.getOriginalFilename() + "!");
return "redirect:/";
}
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
保存处理的代码(即 Controller
中的 storageService.store
)(使用 Files.copy
方法将文件保存到本地)
java
@Override
public void store(MultipartFile file) {
try {
if (file.isEmpty()) {
throw new StorageException("Failed to store empty file " + file.getOriginalFilename());
}
Files.copy(file.getInputStream(), this.rootLocation.resolve(file.getOriginalFilename()));
} catch (IOException e) {
throw new StorageException("Failed to store file " + file.getOriginalFilename(), e);
}
}
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
在 application.properties
中可以配置文件上传的大小限制。
properties
spring.http.multipart.max-file-size=128KB
spring.http.multipart.max-request-size=128KB
1
2
2