参考课程:
【黑马程序员 JavaWeb开发教程】
[https://www.bilibili.com/video/BV1m84y1w7Tb]
@ZZHow(ZZHow1024)
综合案例-文件上传
-
简介
-
文件上传,是指将本地图片、视频、音频等文件上传到服务器,供其他用户浏览或下载的过程。
-
文件上传在项目中应用非常广泛,我们经常发微博、发微信朋友圈都用到了文件上传功能。
-
前端页面三要素
- method=“post”
- enctype=“multipart/form-data”
- type=“file”
<form action="/upload" method="post" enctype="multipart/form-data"> 姓名:<input type="text" name="username"><br> 年龄:<input type="text" name="age"><br> 头像:<input type="file" name="image"><br> <input type="submit" value="提交">
-
-
本地存储
-
在 application.properties 中配置上传文件大小限制
#配置单个文件上传大小限制 #配置单个请求最大大小的限制(一次请求中是可以上传多个文件)
-
MultipartFile 中的方法
String getOriginalFilename();
//获取原始文件名void transferTo(File dest);
//将接收的文件转存到磁盘文件中long getSize();
//获取文件的大小,单位:字节byte[] getBytes();
//获取文件内容的字节数组InputStream getlnputstream();
//获取接收到的文件内容的输入流
-
-
阿里云 OSS
-
阿里云:阿里巴巴集团旗下全球领先的云计算公司,也是中国最大的云服务提供商。
-
阿里云 OSS:
阿里云对象存储OSS(Object Storage Service) ,是一款海量、安全、低成本、高可靠的云存储服务。使用OSS,可以通过网络随时存储和调用包括文本、图片、音频和视频等在内的各种文件。
-
第三方服务-通用思路
准备工作 → 参照官方 SDK 编写入门程序 → 集成使用
- SDK:Software Development Kit 的缩写,软件开发工具包,包括辅助软件开发的依赖(JAR 包)、代码示例等,都可以叫做 SDK。
-
阿里云 OSS-使用步骤
注册阿里云(实名认证) → 充值 → 开通对象存储服务(OSS) → 创建 Bucket → 获取 Accesskey(秘钥) → 参照官方 SDK 编写入门程序 → 案例集成 OSS
- Bucket: 存储空间是用户用于存储对象(Object,就是文件)的容器,所有的对象都必须隶属于某个存储空间。
-
阿里云 OSS-集成
- UploadController
- 接收上传的图片
- 将图片存储起来(OSS)
- 返回图片访问的 URL
- 步骤
- 引入阿里云 OSS 上传文件工具类(由官方的示例代码改造而来)
- 上传图片接口开发
- UploadController
-
综合案例-修改员工
- 查询回显
- 思路
- Browser
- EmpController
- 注解:@GetMapping、@PathVariable
- 接收路径参数 id
- 调用 service 方法查询数据
- 响应
- EmpService
- 调用 mapper 接口查询数据
- EmpMapper
select * from emp where id = ?;
- Database
- 思路
- 修改员工
- 思路
- Browser
- EmpController
- 注解:@PutMapping、@RequestBody
- 接收请求参数并封装
- 调用 service 方法执行修改操作
- 响应
- EmpService
- 补充基础数据
- 调用 mapper 接口修改数据
- EmpMapper
update emp set username = ?, name = ?, gender = ? …where id = ?;
(动态 SQL 实现)
- Database
- 思路
Spring Boot配置文件
-
参数配置化
-
可以将配置信息(如阿里云 OSS 的配置信息)统一在 application.properties 中配置
#自定义的阿里云 OSS 配置信 aliyun.oss.endpoint=https://oss-cn-hangzhou.aliyuncs.com aliyun.oss.accessKeyId=xxx aliyun.oss.accessKeySecret=xxx aliyun.oss.bucketName=web-tlias
-
使用 @Value 注解进行属性注入
@Component public class AliOSSUtils { @Value("${aliyun.oss.endpoint}") private String endpoint; @Value("${aliyun.oss.accessKeyId}") private String accessKeyId; @Value("${aliyun.oss.accessKeySecret}") private String accessKeySecret; @Value("${aliyun.oss.bucketName}") private String bucketName; }
@Value 注解通常用于外部配置的属性注入,具体用法为:
@Value("${配置文件中的 key}")
-
-
YAML 配置文件
-
SpringBoot 提供了多种属性配置方式
-
application.properties
server.port=8080 server.address=127.0.0.1
-
application.yml(与 yaml 相同)
server: port: 8080 address: 127.0.0.1
-
application.yaml(与 yml 相同)
server: port: 8080 address: 127.0.0.1
-
-
常见配置文件格式对比
-
XML:臃肿
<server> <port>8080</port> <address>127.0.0.1</address> </server>
-
properties:层级结构不清晰
server.port=8080 server.address=127.0.0.1
-
YAML(yml / yaml):简洁、数据为中心
server: port: 8080 address: 127.0.0.1
-
-
YAML 基本语法
-
YAML 数据格式
-
对象 / Map 集合:
user: name: zhangsan age: 18 password: 123456
-
数组 / List / Set 集合:
hobby: - Java - C - C++
-
-
-
@ConfigurationProperties 注解
-
自动注入的前提
- 有 Get 和 Set 方法(@Data 注解)
- 交给 IOC 容器管理,成为 Bean 对象(@Component 注解)
- @ConfigurationProperties 注解并配置 prefix 属性
-
示例:
@Data @Component @ConfigurationProperties(prefix = "aliyun.oss") public class AliOSSProperties { private String endpoint; private String accessKeyId; private String accessKeySecret; private String bucketName; }
-
消除红色警告(可选)
“Spring Boot Configuration Annotation Processor not configured”
-
添加 Maven 坐标
<dependency> <groupId>org.springframework.boot</groupId> <antifactId>spring-boot-configuration-processor</artifactId> </dependency>
-
该依赖会自动识别被 @ConfigurationProperties 标识的 Bean 对象,并在配置项中进行提示。
-
在配置文件中可以使用驼峰命名也可以使用提示的横杠命名。
-
-
@ConfigurationProperties 注解与 @Value 注解的对比
- 相同点
- 都用来注入外部配置的属性的。
- 不同点
- @Value 注解只能一个一个进行外部属性的注入。
@ConfigurationProperties 注解可以批量将外部的属性配置注入到 Bean 对象的属性中。
- @Value 注解只能一个一个进行外部属性的注入。
- 相同点
-