使用阿里云oss上传品牌图标
实际使用中,需要替换掉品牌图标的输入框,改为图片上传。
上传品牌图标,使用云存储
分布式的服务会有多台服务器上传内容,如果保存在自己搭建的服务器上,维护成本高还麻烦,使用阿里云存储功能springcloud alibaba-OSS,按量收费,即开即用。
来到阿里云OSS,点击开通即可,不使用不收费。
之后点击创建存储空间:
根据测试使用的性质,选择如下:
OSS简单使用测试
来到创建好的存储空间,点击上传文件,拖拽上传一张图片
上传成功之后,点击详情就会有一串URL地址:
访问这个URL地址就会直接下载这个图片。
适配接口使用OSS
上传文件参考阿里官方文档。
第一步是安装SDK,在product模块的pom文件中导入阿里OSS的依赖:
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.8.0</version>
</dependency>
之后使用官方给的代码测试一下上传功能,在test模块中:
@Test
public void testUpload() throws FileNotFoundException {
// Endpoint以杭州为例,其它Region请按实际情况填写。
String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// 云账号AccessKey有所有API访问权限,建议遵循阿里云安全最佳实践,创建并使用RAM子账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建。
String accessKeyId = "<yourAccessKeyId>";
String accessKeySecret = "<yourAccessKeySecret>";
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// 上传文件流。
InputStream inputStream = new FileInputStream("<yourlocalFile>");
ossClient.putObject("<yourBucketName>", "<yourObjectName>", inputStream);
// 关闭OSSClient。
ossClient.shutdown();
}
这里的账号密码在以下位置:
之后输入账号,记住点选编程访问:
之后就能获得要使用的ID和密码:
之后要给创建的用户添加权限:
之后按照文档要求填写内容,即可测试:
@Test
public void testUpload() throws FileNotFoundException {
// Endpoint以杭州为例,其它Region请按实际情况填写。
String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// 云账号AccessKey有所有API访问权限,建议遵循阿里云安全最佳实践,创建并使用RAM子账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建。
String accessKeyId = "xxxxxxxxx";
String accessKeySecret = "xxxxxxx";
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// 上传文件流。
InputStream inputStream = new FileInputStream("C:\\Users\\yhm\\Pictures\\初音头像.jpg");
ossClient.putObject("lastingwar", "初音头像.jpg", inputStream);
// 关闭OSSClient。
ossClient.shutdown();
System.out.println("上传成功");
}
显示上传成功:
同时在OSS中也能看到图片:
封装完整的使用方法
测试方法只是简单的使用,正常使用通常经过springcloud alibaba的封装,文档地址 将原始导入的sdk注解掉
<!-- <dependency>-->
<!-- <groupId>com.aliyun.oss</groupId>-->
<!-- <artifactId>aliyun-sdk-oss</artifactId>-->
<!-- <version>3.8.0</version>-->
<!-- </dependency>-->
来到common模块中pom文件,导入封装好的starter依赖:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alicloud-oss</artifactId>
</dependency>
这样可以在配置文件中输入好OSS ossClient实例的数据,之后使用只需要注入即可。
来到product模块的yml文件
spring:
datasource:
username: root
password: 123456
url: jdbc:mysql://47.99.247.20:3306/mall_pms?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
driver-class-name: com.mysql.cj.jdbc.Driver
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
alicloud:
access-key: xxxxxxxx
secret-key: xxxxxx
oss:
endpoint: oss-cn-hangzhou.aliyuncs.com
....
添加上alicloud的配置信息
之后即可在测试中进行新的使用方法测试:
@Autowired
OSSClient ossClient;
@Test
public void testUpload() throws FileNotFoundException {
InputStream inputStream = new FileInputStream("C:\\Users\\yhm\\Pictures\\初音头像.jpg");
ossClient.putObject("lastingwar", "初音头像2号.jpg", inputStream);
// 关闭OSSClient。
ossClient.shutdown();
System.out.println("上传成功");
}
测试通过;
之后查一下阿里云:
上传成功。