以前我们直接将头像文件保存到本地目录或tomcat中,但其他人无法访问到本地硬盘,所以现在我们使用云存储服务。
使用阿里云服务
1. https://www.aliyun.com/ ,开通对象存储OSS
2. 使用oss管理控制台,创建bucket
![](https://img.haomeiwen.com/i8144937/fb205310c8137d94.png)
3. 开通完成之后可以直接在该bucket内上传文件,但我们更多的是使用java代码操作
java操作阿里云oss
1. 创建操作阿里云oss许可证(阿里云颁发id和密钥)
![](https://img.haomeiwen.com/i8144937/24dd9f9405ecf305.png)
![](https://img.haomeiwen.com/i8144937/5f4df200e49ede9d.png)
3. 在oss文档中找到java SDK文档查看使用说明:https://help.aliyun.com/document_detail/32008.htm?spm=a2c4g.11186623.0.0.401f4b78m5mxNv#concept-32008-zh
3.1 引入依赖写入配置
![](https://img.haomeiwen.com/i8144937/0e8e4f477186689b.png)
![](https://img.haomeiwen.com/i8144937/ed58ccea6524e7cd.png)
3.2 新建启动类,启动发现问题
原因:由于我们该模块是只用于上传,不需要数据库,但启动类会去查找数据源。
![](https://img.haomeiwen.com/i8144937/7ed3a120be439940.png)
解决:1. 引入数据库依赖 2.在启动类添加属性exclude = DataSourceAutoConfiguration.class,使其不去加载数据库配置
![](https://img.haomeiwen.com/i8144937/abcc2e9f5d72a8bd.png)
3.2 在service中写入相应的逻辑
![](https://img.haomeiwen.com/i8144937/8ffc69bd76b7910d.png)
3.3 在controller中调用
![](https://img.haomeiwen.com/i8144937/cc73bd7243ef5f7a.png)
3.4 启动项目,通过swagger测试成功
![](https://img.haomeiwen.com/i8144937/357465a809e69ae3.png)
问题
1. 上传相同的文件名称,之前上传的同名文件会被覆盖
解决方法:在文件名称中添加随机的唯一值,使每个文件名不同
1) 根据每个用户分类
2) 根据日期分类
![](https://img.haomeiwen.com/i8144937/0178e38a5b12eb43.png)
![](https://img.haomeiwen.com/i8144937/d791dba5a753f308.png)
网友评论