使用阿里云oss上传品牌图标

实际使用中,需要替换掉品牌图标的输入框,改为图片上传。

上传品牌图标,使用云存储

分布式的服务会有多台服务器上传内容,如果保存在自己搭建的服务器上,维护成本高还麻烦,使用阿里云存储功能springcloud alibaba-OSS,按量收费,即开即用。

来到阿里云OSS,点击开通即可,不使用不收费。

oss上传 h file does not exist oss上传图片_阿里云


之后点击创建存储空间:

oss上传 h file does not exist oss上传图片_上传_02


根据测试使用的性质,选择如下:

oss上传 h file does not exist oss上传图片_上传_03


oss上传 h file does not exist oss上传图片_上传_04


OSS简单使用测试

来到创建好的存储空间,点击上传文件,拖拽上传一张图片

oss上传 h file does not exist oss上传图片_阿里云_05


上传成功之后,点击详情就会有一串URL地址:

oss上传 h file does not exist oss上传图片_阿里云_06


访问这个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();
    }

这里的账号密码在以下位置:

oss上传 h file does not exist oss上传图片_API_07


之后输入账号,记住点选编程访问:

oss上传 h file does not exist oss上传图片_云服务器_08


之后就能获得要使用的ID和密码:

oss上传 h file does not exist oss上传图片_spring_09


之后要给创建的用户添加权限:

oss上传 h file does not exist oss上传图片_spring_10


之后按照文档要求填写内容,即可测试:

@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上传 h file does not exist oss上传图片_spring_11


同时在OSS中也能看到图片:

oss上传 h file does not exist oss上传图片_上传_12

封装完整的使用方法
测试方法只是简单的使用,正常使用通常经过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("上传成功");
    }

测试通过;

oss上传 h file does not exist oss上传图片_阿里云_13


之后查一下阿里云:

oss上传 h file does not exist oss上传图片_上传_14


上传成功。