使用应用程序上传文件的缺点
- 慢: 先将文件发送至后端 在由后端调用阿里oss进行上传 而直传没有中转这一步 直接拿着密钥 调用oss进行上传
- 扩展性差: 若之后用户增多 增大后端服务器的压力
- 费用高: 因为oss上传上行流量是不收费的 直传oss 可以省去应用服务器的费用
服务端使用
首先导入包并配置好key 和 endpoint bucket
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>aliyun-oss-spring-boot-starter</artifactId>
</dependency>
导入net.sf.json-lib 这个包的最后版本更新的时候jdk为1.5 所以还要指定jdk版本
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<classifier>jdk15</classifier>
</dependency>
文档地址: https://help.aliyun.com/document_detail/91868.htm?spm=a2c4g.11186623.0.0.16072214bdo6s4#concept-ahk-rfz-2fb
可以自定义文件上传前缀
根据文档复制粘贴即可 若后端已经配置过跨域请求 得把最后两句删掉 否则跨域重复会报错
服务端返回的密钥
前端调用
文件上传需要以下几项数据 大部分可以从后端请求到
success_action_status 若不设置 上传成功状态码为204 key为文件名称 前缀必须为dir
policyData: {
OSSAccessKeyId: '',
policy: '',
signature: '',
key: '',
success_action_status: 200
}
设置上传的请求体
在上传组件中定义要携带的数据
action 为policy中的host