阿里云OSS

讲师管理模块中的添加讲师时上传头像使用阿里云OSS存储服务

一,创建阿里云OSS对象存储服务的环境配置

对象存储OSS
注册使用阿里云对象存储OSS

在这里插入图片描述
通过java代码操作OSS,上传文件到阿里云OSS操作
1、创建操作阿里云OSS许可证(秘钥和id)
在这里插入图片描述
在父工程的pom文件中,添加阿里云OSS依赖

在这里插入图片描述
上传下载等实例代码阿里云官方文档给出实例代码
步骤:
1、在service模块中创建子模块,service_oss模块
如果当前service_oss模块的java 文件无法编译,右键当前模块,选择openModelSeting,进行设置
在这里插入图片描述
2、在service_oss的pom文件中引入oss的相关依赖
由于在父工程中已经引入了相关依赖的版本的,所以这里直接使用,引入依赖
在这里插入图片描述
3、编写sevice_oss的配置文件
配置文件包含:服务端口:这里和service_edu端口不同,服务名,环境设置(开发环境dev),访问阿里云对象存储OSS,配置阿里云OSS提供的地域节点、id、秘钥、bucket名字
其中bucket可以在对象存储OSS控制台创建,也可在java中创建
在这里插入图片描述

4、创建启动类:
在service_oss模块下创建包at.guigu.oss
创建启动类ossApplication

在这里插入图片描述
启动类运行时:出现问题,
在这里插入图片描述

当前模块在service_oss模块中,主要配置对象存储oss。 因此当前模块不需要操作数据库,不需要配置数据,在配置文件中没有数据的配置,只需要实现oss上床头像功能,但是当前启动类启动时在配置文件中查找了数据库的配置
解决方式:
方式一、添加数据库的配置,即将service_edu中关于数据库的配置,在service_oss配置文件中进行配置,但是当前模块只是实现oss头像上传,不需要数据库的相关配置,因此采用方式二;
方式二:在当前模块service_oss的启动类中添加属性,是的当前模块启动时,默认不去加载数据库的配置**(目前使用这种方式)**
在启动类注解中添加一个属性,让他不去加载数据库的配置
@SpringBootConfiguration(exclude= DataSourceAutoConfiguration.class),,加载配置文件时,默认不去加载数据库,即取出数据源自动配置)
在这里插入图片描述

在这里插入图片描述

二、使用阿里云OSS对象存储服务实现文件上传

第一步、创建一个常量类,使用该类读取OSS模块中配置文件的相关内容,即地域节点,id、秘钥、bucket名等内容
这里值重点:
创建一个常量类,添加@Component注解,项目启动时交给springboot管理,在该类中,添加配置文件中相关内容的属性,通过@Value(" 配 置 文 件 中 的 k e y " ) , 其 中 {配置文件中的key}"),其中 key")${配置文件中的key}是获取配置文件中key对应的值,而@Value()注解表示属性注解,将值传递给属性,这里属性都是私有属性,这样项目启动时,通过@component加载当类,可以读取掉属性的值,但是这个类之外的无法适用这几个私有属性,因此这里通过一个借口实现。
在spring中,提供了一个借口InitializingBean,当项目启动时,spring加载这几个属性之后,会执行一个方法,,因此可以通过将当前类实现这个接口,然后重写接口中的这个方法afterPropertiesSet(), 然后在定义几个静态属性,在这个方法中对这几个静态属性利用前面的私有属性进行赋值,最后通过类名.静态属性调用这些属性
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
**第二步:**由于使用OSS对象存储服务,只是实现讲师头像上传,不需要操作数据库表,所以无法使用代码生成器,因此这里手动写controller、service
创建controller、创建service、

1、创建controller
在controller中实现
在这里插入图片描述

**2、创建service接口,实现service接口,**创建service接口实现类,在接口中编写上传头像方法,在实现类中重写该方法,因此接口的实现类优先使用接口的方法,前提是实现类中全部是接口中的方法,由于在controller中注入service接口,用到service接口类型,还有接口实现类的对象,所有service双向类中的方法,必须在service接口中,然后在实现类中重写该方法就行
springboot+mybatis_plus模式:controller——service接口——service实现类-mapper接口模式
(说明)在controller控制类中注入servie接口,在service实现类中注入mapper接口,因此只需要在controller中注入service接口,实现上注入的service接口的实现类,接口的实现类优先使用接口类型,前提是实现类中只有接口的方法,没有其他方法,这里在tongtroller中注入service接口的原因是:jdk动态代理中,当spring管理事务控制时,必须使用代理对象,因此代理对象才有实务控制,而实现类是目标对象,不是代理对象,因此采用接口作为代理对象

具体步骤:
*(1)、*重写service接口中的方法,即上传文件头像的方法,传入的参数的上传的文件,类型为MutipartFile,
在该方法中通过前面的工具类(就是获取配置文件内容的工具类),利用类名.静态属性获取地域节点、id、秘钥、bucket名称。
*(2)、*创建OSS对象,为了防止上传文件为空,这里捕获异常,通过try{}catch{},创建OSS对象传入地域节点、id、秘钥三个参数
*(3)、*获取上传文件的输出流以及上传文件的原始名称
*(4)、*调用OSS中的上传文件的方法,传入三个参数,bucket名称,文件名称、输入流,上传头像文件
*(5)、*关闭OSS对象,
(6)、自己加的返回上传文件在OSS中的的路径,通过一定的格式自定义文件路径
一般规则是 “https://” + bucketName + “.” + endpoint + “/” + fileName;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值