SpringBoot 学习笔记心得单文件&多文件上传
Posted Adorable_Rocy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot 学习笔记心得单文件&多文件上传相关的知识,希望对你有一定的参考价值。
前言:文件上传在开发中是比较常用的,SpringBoot为我们提供了封装好的类,我们只需要标明注解使用即可
1.创建表单文件
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form th:action="@{/upload}" method="post" enctype="multipart/form-data">
名字:<input type="text" name="name"><br/>
年龄:<input type="text" name="age"><br/>
<input type="file" name="headImg">头像<br/>
<input type="file" name="photos" multiple>生活照片<br/>
<input type="submit" value="提交">
</form>
</body>
</html>
2.编写controller解析请求/upload
/**
* 1. 使用MultipartFile 解析获取的文件
* 2. @RequestPart 获取使用MultipartFile
* @param name
* @param age
* @param headImg
* @param photos
* @return
*/
@PostMapping("/upload")
public String fileUoload(@RequestParam("name") String name ,
@RequestParam("age") String age ,
@RequestPart("headImg") MultipartFile headImg ,
@RequestPart("photos") MultipartFile[] photos){
log.info("上传的信息:name={},age={},headImg={},photos={}",
name,age,headImg.getSize(),photos.length);
return "success";
}
上传文件日志打印如下:
controller.FileUploadController : 上传的信息:name=XIaoMing,age=23,headImg=60,photos=4
3.在文件上传中,有默认最大请求值的限定,如果超过了大小,会抛500异常。
SizeLimitExceededException: the request was rejected because its size (163185519) exceeds the configured maximum (10485760)
当我们其中的某个属性的时候,可以查看源码XXXAutoConfiguration,关于文件上传,查找的就是MultipartAutoConfiguration,在里面可以看到相关的配置前缀spring.servlet.multipart,于是有了修改属性:
查看属性值后,修改默认大小:
spring:
servlet:
multipart:
max-file-size: 10MB
max-request-size: 100MB
再次上传文件,日志打印如下
上传的信息:name=XIaoMing,age=23,headImg=60,photos=16
4. 存储文件到本地磁盘上(或者OSS文件服务器上)
if (!headImg.isEmpty()) {
headImg.transferTo(new File("D:\\\\cache\\\\"+headImg.getOriginalFilename()));
}
if (photos.length > 0) {
for (MultipartFile photo : photos) {
if (!photo.isEmpty()) {
photo.transferTo(new File("D:\\\\cache\\\\"+photo.getOriginalFilename()));
}
}
}
上传完毕
日志打印:
c.e.t.controller.FileUploadController : 上传的信息:name=XiaoMing,age=22,headImg=60,photos=6
以上是关于SpringBoot 学习笔记心得单文件&多文件上传的主要内容,如果未能解决你的问题,请参考以下文章