谷粒商城-全栈-22 商品服务-阿里云云存储 (OSS) 开通与使用
一、文件存储
普通上传:一般是将文件资源上传到对应的后端web服务器保存。
普通上传的分布式情况:如果是分布式情况,则上传的文件可能是随机上传保存到某个服务器,会导致找不到具体的服务器。
针对以上这种情况,可以自己搭建文件存储服务器,但是自己搭建复杂,维护成本高,所以可以采取第三方云存储,方便快捷,免维护,安全有保证,国内知名云服务商有阿里云,七牛云等,这里我们使用阿里云OSS。
阿里云对象存储-普通上传方式
用户可以将图片上传到应用服务器,然后在应用服务器调用阿里云OSS提供的接口,将文件流上传到阿里云,这样也可以,但是有一个问题,上传文件会很占用我们自己的应用服务器的宽带,所以,这种方法有弊端,可以将上传流程放到浏览器,后端只做权限校验即可,直接将文件上传到阿里云OSS服务器上。
阿里云对象存储-服务端签名后直传
用户向应用服务器请求上传的权限(签名校验),应用服务器返回上传的权限,然后用户携带权限签名直接上传数据到OSS。
二、阿里云OSS
1、简介
对象存储服务(Object Storage Service,OSS)是一种海量、安全、低成本、高可靠的云存储服务,适合存放任意类型的文件。容量和处理能力弹性扩展,多种存储类型供选择,全面优化存储成本。阿里云提供了 SpringCloud ALibaba-OSS扩展包,非常快捷方便使用。
2、申请开通
进入阿里云控制台,找到对象存储 OSS,然后申请开通。
创建 bucket,如同创建仓库空间:
可以在文件管理类上传一张图片测试一下:
文档:
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 管理,然后创建子账号密钥:
然后选择编程访问:
创建好之后会给我们生成子账号的 AccessKey ID 和 AccessKey Secret:
添加的子账号默认是没有任何权限的,所以,需要给新加的用户添加OSS管理的权限:
三、 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 示例。
为者常成,行者常至
自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)