当前位置:网站首页>阿里云对象存储OSS的开通和使用
阿里云对象存储OSS的开通和使用
2022-07-27 16:25:00 【热爱旅行的小李同学】
阿里云对象存储OSS的开通和使用
前言:
本博客的实战部分是针对我做的SpringBoot+Vue在线教育项目而写的。
一、开通阿里云OSS
1 进入阿里云官网,找到阿里云对象存储OSS入口
2 点击对象存储OSS
3 点击开通服务
4 同意协议,点击立即开通
5 点击管理控制台
6 点击创建Bucket
7 创建Bucket
8 上传文件
9 随便上传一张图片
10 现在可以查看图片,可以看到URL信息
二、开通AccessKey
1 点击AccessKey
2 继续使用AccessKey
3 手机验证
4 可以看到秘钥信息
5 点击保存AK信息,会自动下载一个csv文件
6 点击学习路径
7 点击Java SDK
8 可以查看阿里云OSS的官方文档
三、项目实战 使用Java SDK操作OSS
结合我的Springboot+Vue在线教育项目,整合阿里云OSS
1 首先需要引入阿里云OSS相关依赖,可参考官方文档
<!--aliyunOSS--> <dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> <version>${aliyun.oss.version}</version> </dependency>
2 在service层创建service_oss模块
3 在pom.xml中添加依赖
<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>
4 编写配置文件application.properties
注意:OSS相关配置前后不能加空格
# 端口号
server.port=8002
# 服务名
spring.application.name=service-oss
# 环境设置
spring.profiles.active=dev
# 集成阿里云OSS
aliyun.oss.file.endpoint=
aliyun.oss.file.keyid=
aliyun.oss.file.keysecret=
# bucket可以在控制台创建,也可以使用java代码创建
aliyun.oss.file.bucketname=
5 写启动类 OssApplication.java
注意: 要排除掉数据源加载,需要在SpringBootApplication上增加execude=DataSourceAutoConfiguration.class
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)//不加载数据源
@ComponentScan(basePackages = {
"com.atguigu"})
public class OssApplication {
public static void main(String[] args) {
SpringApplication.run(OssApplication.class,args);
}
}
6 写配置工具类
注意:该工具类需要加上Component注解,且需要实现InitializingBean接口,重写afterPropertiesSet()方法,目的是利用定义的私有属性。
//当项目一启动,spring有一个接口,spring加载之后,执行接口一个方法
@Component
public class ConstantPropertiesUtils implements InitializingBean {
//一启动项目,这个类就会初始化
//读取配置文件的内容
@Value("${aliyun.oss.file.endpoint}")
private String endpoint;
@Value("${aliyun.oss.file.keyid}")
private String keyId;
@Value("${aliyun.oss.file.keysecret}")
private String keySecret;
@Value("${aliyun.oss.file.bucketname}")
private String bucketName;
//定义公开静态常量
public static String END_POINT;
public static String ACCESS_KEY_ID;
public static String ACCESS_KEY_SECRET;
public static String BUCKET_NAME;
@Override
public void afterPropertiesSet() throws Exception {
END_POINT = endpoint;
ACCESS_KEY_ID = keyId;
ACCESS_KEY_SECRET = keySecret;
BUCKET_NAME = bucketName;
}
}
7 service层
可以查看阿里云OSS官方文档,进行修改
OssService.java
public interface OssService {
//上传头像到OSS
String uploadOssFileAvatar(MultipartFile file);
}
OssServiceImpl.java
注意:为什么要返回上传对象最终的url,因为controller要将该url作为响应体信息传入。阿里云OSS官方文档并没有发现直接获取该url的方法,需要手动拼接字符串。
@Service
public class OssServiceImpl implements OssService {
@Override
public String uploadOssFileAvatar(MultipartFile file) {
//通过工具类获取
String endpoint = ConstantPropertiesUtils.END_POINT;
String accessKeyId = ConstantPropertiesUtils.ACCESS_KEY_ID;
String accessKeySecret = ConstantPropertiesUtils.ACCESS_KEY_SECRET;
String bucketName = ConstantPropertiesUtils.BUCKET_NAME;
// 上传文件流。
InputStream inputStream = null;
try {
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// 获取上传文件输入流
inputStream = file.getInputStream();
// 获取文件名称
String filename = file.getOriginalFilename();
// 调用oss方法实现上传
// 第一个参数: Bucket名称 第二个参数: 上传到oss文件路径和文件名称 /aa/bb/1.jpg 第三个参数: 上传文件的输入流
ossClient.putObject(bucketName, filename, inputStream);
// 关闭OSSClient。
ossClient.shutdown();
// 把上传之后的文件路径返回
// https://edu-0912.oss-cn-beijing.aliyuncs.com/4c480a7029cbea756e87d34940654825.jpg
return "https://" + bucketName + "." + endpoint + "/" + filename;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
8 controller
注意:需要在controller上添加@CrossOrign注解,开放跨域请求
@RestController
@RequestMapping(path = "/eduoss")
@CrossOrigin
public class OssController {
@Autowired
private OssService ossService;
//上传头像的方法
@PostMapping("/uploadOssFile")
public R uploadOssFileAvatar(MultipartFile file){
//获取上传的文件 MultipartFile
String url = ossService.uploadOssFileAvatar(file);
return R.ok().data("url",url);
}
}
9 启动工程,Swagger测试
进入swagger,可以开始调试了
10 上传文件
11 OSS后台查看,可以发现多了一张图片
12 项目结构
service_oss模块的作用是给讲师添加头像
结语:

水平有限,仅供参考,若有纰漏,希望随时指出!
边栏推荐
猜你喜欢

C # interaction with MySQL database - MySQL configuration and addition, deletion, query and modification operations

正则表达式的扩展

Self control principle learning notes - system stability analysis (1) - BIBO stability and Routh criterion

MySQL 02 initial experience

Kinect for Unity3D——BackgroundRemovalDemo学习

进行接口测试时,连接数据库,对数据源进行备份、还原、验证操作

大冤种们,新进测试行业,如何正确选择意向企业?

Electric heating neck pillow chip-dltap703sc

JDBC-MySql 02 数据访问和DAO模式

Jmeter接口自动化-如何解决请求头Content-Type冲突问题
随机推荐
又有一个Repeater的例子
Latex use - subfigure vertical graphics
MySQL 01 relational database design
功率单位(power control)
Matplotlib (basic usage)
WinForm screenshot save C code
MySQL 04 advanced query (II)
The great idea of NS2
Some advice for NS2 beginner.
Unity learning notes (rigid body physics collider trigger)
Useful resources for ns2
电磁场学习笔记-矢量分析和场论基础
IDEA连接数据库时区问题,报红Server returns invalid timezone. Need to set ‘serverTimezone‘ property.
Code interview of Amazon
Docker - docker installation, MySQL installation on docker, and project deployment on docker
Normal distribution, lognormal distribution, generation of normal random numbers
webservice的疑问
Typescript installation
MySQL 02 初体验
Nacos集群部署-高可用保证