谷粒商城-全栈-22 商品服务-阿里云云存储 (OSS) 开通与使用

一、文件存储

普通上传:一般是将文件资源上传到对应的后端web服务器保存。
普通上传的分布式情况:如果是分布式情况,则上传的文件可能是随机上传保存到某个服务器,会导致找不到具体的服务器。
针对以上这种情况,可以自己搭建文件存储服务器,但是自己搭建复杂,维护成本高,所以可以采取第三方云存储,方便快捷,免维护,安全有保证,国内知名云服务商有阿里云,七牛云等,这里我们使用阿里云OSS。

file

阿里云对象存储-普通上传方式

file

用户可以将图片上传到应用服务器,然后在应用服务器调用阿里云OSS提供的接口,将文件流上传到阿里云,这样也可以,但是有一个问题,上传文件会很占用我们自己的应用服务器的宽带,所以,这种方法有弊端,可以将上传流程放到浏览器,后端只做权限校验即可,直接将文件上传到阿里云OSS服务器上。

阿里云对象存储-服务端签名后直传

file

用户向应用服务器请求上传的权限(签名校验),应用服务器返回上传的权限,然后用户携带权限签名直接上传数据到OSS。

二、阿里云OSS

1、简介

对象存储服务(Object Storage Service,OSS)是一种海量、安全、低成本、高可靠的云存储服务,适合存放任意类型的文件。容量和处理能力弹性扩展,多种存储类型供选择,全面优化存储成本。阿里云提供了 SpringCloud ALibaba-OSS扩展包,非常快捷方便使用。

2、申请开通

进入阿里云控制台,找到对象存储 OSS,然后申请开通。

file

创建 bucket,如同创建仓库空间:
file

可以在文件管理类上传一张图片测试一下:
file

文档:
Java SDK 示例

3、安装

OSS安装方式有两种,第一种是 Java SDK 安装,第二种是用 Spring cloud alibaba-OSS 安装包。

java sdk安装:
方式一:在Maven项目中加入依赖项(推荐方式)
在Maven工程中使用OSS Java SDK,只需在pom.xml中加入相应依赖即可。以3.10.2版本为例,在中加入如下内容:

<dependency>
    <groupId>com.aliyun.oss</groupId>
    <artifactId>aliyun-sdk-oss</artifactId>
    <version>3.10.2</version>
</dependency>

阿里云账号安全说明

阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录RAM控制台创建RAM账号。

RAM(Resource Access Management): 点击访问RAM控制台

在个人用户点击 AccessKey 管理,然后创建子账号密钥:
file

然后选择编程访问:
file

创建好之后会给我们生成子账号的 AccessKey ID 和 AccessKey Secret:

file

添加的子账号默认是没有任何权限的,所以,需要给新加的用户添加OSS管理的权限:
file

三、 Spring Cloud alibaba-OSS

上边的Java SDK包封装的不够简洁,我们使用Spring Cloud Alibaba现成封装的SDK包,具体使用可以看 Spring Cloud Alibaba 官方文档

项目中使用步骤:
1、修改 pom.xml 文件,引入 aliyun-oss-spring-boot-starter。

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>aliyun-oss-spring-boot-starter</artifactId>
</dependency>

2、在配置文件中配置 OSS 服务对应的 accessKey、secretKey 和 endpoint。

// application.properties
alibaba.cloud.access-key=your-ak
alibaba.cloud.secret-key=your-sk
alibaba.cloud.oss.endpoint=***

更详细的说明请参考官方文档的Aliyun Spring Boot OSS 示例

为者常成,行者常至