一:文件上传
1.简介
1.1 前端
前端页面3要素
1.2后端
【Java Web】011 -- SpringBootWeb综合案例(删除/修改员工、文件上传、配置文件)-CSDN博客
// uploadController层
@Slf4j
@RestController
public class UploadController {
public Result upload(String name, Integer age, MultipartFile image){
log.info("文件上传:{},{},{}",name,age,image);
return Result.success();
} //通过MultipartFile image)直接可上传文件
}
//通过MultipartFile image)直接可上传文件,但是文件是临时上传,一旦该请求结束,这些临时文件也会删除。因此需要保存下来--本地存 & 云端存(阿里云)
2.本地存储
将文件存储到本地磁盘中
Postman测试
2.1问题:重命名文件会把上面的文件顶掉
@PostMapping("/upload")
public Result upload(String name, Integer age, MultipartFile image) throws IOException {
log.info("文件上传:{},{},{}",name,age,image);
//获取原始文件名
String originalFilename =image.getOriginalFilename();
//问题:文件名重名,新上传文件会顶掉旧文件
//解决方法:uuid,通用唯一识别码,本质上是一个长度固定且唯一的字符串
int index =originalFilename.lastIndexOf(".");
String extname =originalFilename.substring(index);
String newFileName= UUID.randomUUID().toString()+extname;
log.info("新的文件名:{}",newFileName);
//将文件存储到本地磁盘
image.transferTo(new File("C:\\Users\\Hp\\Pictures\\Saved Pictures\\"+originalFilename));
return Result.success();
}
2.2问题:Springboot默认上传最大为1M,超出会报错
spring.servlet.multipart.max-file-size = 50MB
spring.servlet.multipart.max-request-size = 50MB
server.tomcat.max-swallow-size = 100MB # 最重要的是这一行
注意上面最重要的是要配置内嵌的 tomcat 的最大吞吐量即 max-swallow-size,可以设置 -1 不限制,也可以设置一下比较大的数字这里微酷设置 100M。当上传文件超 tomcat 的大小限制后会先于 Controller 触发异常,所以这时我们的异常处理类无法捕获 Controller 层的异常。
这样当上传文件超大小限制后就可以被全局异常处理类捕获了。
3.云存储(阿里云OSS)
3.1 阿里云介绍
3.2 对象存储服务OSS
3.3 阿里云准备工作-开通OSS-创建bucket-获取AccessKey密钥
【Java Web】011 -- SpringBootWeb综合案例(删除/修改员工、文件上传、配置文件)-CSDN博客
3.4 参照官方SDK编写入门程序
(1)安装SDK
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.15.1</version>
</dependency>
如果使用的是Java 9及以上的版本,则需要添加JAXB相关依赖
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
<!-- no more than 2.3.3-->
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
<version>2.3.3</version>
</dependency>
(2)参照文档,直接复制代码再修改
修改地域名
运行文件上传
3.5 案例集成OSS
@Autowired private AliOSSUtils aliOSSUtils; //阿里云上传 @PostMapping("/upload") public Result upload(MultipartFile image) throws IOException { log.info("文件上传:{}",image); //使用阿里云OSS工具类进行文件上传 String url= aliOSSUtils.upload(image); // //new对象AliOSSUtils,Springboot中,容器管理 log.info("文件上传完毕,访问路径为:{}",url); return Result.success(url); }
测试
二:修改员工
1.根据id查询员工
2.修改信息
三:配置文件
【Java Web】011 -- SpringBootWeb综合案例(删除/修改员工、文件上传、配置文件)-CSDN博客
@value 参数配置,单个参数