java代码操作阿里云oss
- 创建操作阿里云oss许可证(阿里云颁发的id和密钥)
- 创建AccessKey ,得到ID和密钥(用完之后,禁用)
- 阿里云官网有学习路径->开发者资源->Java SDK
创建service_oss模块
-
引入相关依赖
<dependencies> <!--阿里云oss依赖--> <dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> </dependency> <!-- 日期工具栏依赖--> <dependency> <groupId>joda-time</groupId> <artifactId>joda-time</artifactId> </dependency> </dependencies>
-
配置文件
# 服务端口 server.port=8002 # 服务名 spring.application.name=service-oss # 环境设置:dev、test、prod spring.profiles.active=dev #阿里云 OSS #不同服务器地址不同 aliyun.oss.file.endpoint=oss-cn-nanjing.aliyuncs.com aliyun.oss.file.keyid=LTAI5t8gjeQRLee aliyun.oss.file.keysecret=CHNY08RNer #bucket可以在控制台创建,也可以使用java代码创建 aliyun.oss.file.bucketname=colleg1
启动的时候,找数据库配置,但是现在模块因为不需要操作数据库,只是做上传到oss
解决方式:
方式一:添加上数据库配置
方式二:在启动类中添加属性,默认不去加载数据库配置
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
创建常量类,读取配置文件中的类;
package com.smile.oss.utils; /** 需求:当项目已启动,spring接口,spring加载之后,执行接口一个方法 需要实现InitializingBean接口 * @author jia * @date 2022/9/4 * @description 读取配置文件中的类 * 当项目初始化之后,先根据value注解,将值赋给变量。然后执行afterPropertiesSet()方法,达到其他类可以取到这个值 */ import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @Component //交给spring管理 public class ConstantPropertiesUtils implements InitializingBean { //读取配置文件内容 /** * 站点 */ @Value("${aliyun.oss.file.endpoint}") public String endpoint; /** * 密钥id */ @Value("${aliyun.oss.file.keyid}") private String keyId; /** * 密钥 */ @Value("${aliyun.oss.file.keysecret}") private String keySecret; /** * bucketName */ @Value("${aliyun.oss.file.bucketname}") private String bucketName; /** * 为了其他类可以使用,定义公开静态常量 */ public static String END_POINT; public static String KEY_ID; public static String KEY_SECRET; public static String BUCKET_NAME; @Override public void afterPropertiesSet() throws Exception { END_POINT = endpoint; KEY_ID = keySecret; KEY_SECRET = keySecret; BUCKET_NAME = bucketName; } }
注意:文件名相同上传会被覆盖,所以加上当前日期在文件名中