一、背景介绍
虽然我目前做的是一个博客的小网站,但是以后无论是自己的博客还是实际的项目,都可以用图片来提供外链,方便管理,如果你的网站访问量很高啊,一天几十万几百万啊,这时候你考虑的就不是服务器空间够不够大,而是惊人的并发数啊,光是请求html文件(或其他)的链接就处理不过来了,哪还有多余的资源去读取图片啊,索性就把图片存另一个服务器吧,给主服务器减轻压力啊,而且一般用图床的,都是图片之类的静态文件非常多,把图片存储到第三方CDN,除了加快图片访问速速,还可以降低你服务器的存储压力,后续网站迁移扩容就不受影响了。于是创建图床的想法诞生了。接下来讲解一下博客中用的图床——阿里云对象存储(Object Storage Service,简称OSS)
,虽然目前大家用的比较多的是七牛云、又拍云之类的,但是因为我个人原因我还是选择了阿里云.
好了,废话不多说,开始进入正题!
二、阿里云 OSS 基本使用?
1、快速使用
- Step1:开通 OSS 服务。
- Step2:创建一个 存储空间(bucket)。
- Step3:上传文件。
- Step4:下载文件。
- Step5:删除文件。
- Step6;删除存储空间。
1、快速使用
-
可以使用命令行管理工具管理(ossutil)。
-
可以使用图形界面工具管理(ossbrowser)。
-
可以使用 API 、SDK 管理。(比如 Java SDK)。
【API 与 SDK 区别:】 API:Application Programming Interface,即应用程序接口。 SDK:Software Development Kit,即软件开发工具包。 简单的理解: API 用于访问一个函数。 SDK 是第三方提供的工具包,里面有各种函数,即各种 API。
2、开通 OSS 服务
(1)Step1
:去官网开通(先注册一个阿里云账号,再去开通对象存储 OSS 服务)。
(2)Step2
:勾选协议,并点击开通。
(3)Step3
:开通成功,跳转到控制台。
3、创建一个存储空间(bucket)
(1)Step1
:在控制台界面创建一个存储空间。
(2)Step2
:填写 存储空间相关信息。
ps:这里选择私有,然后创建目录的时候
文件ACL
选择继承Bucket
通过openAPI上传文件(比如图片)后网页去访问图片地址的时候会不显示,会报AccessDenied You have no right to access this object because of bucket acl
错误,所以你可以这里选择私有,然后在目录上选择公共读写的权限或者干脆全部选择公共读写权限
4、上传文件
(1)Step1
:进入文件管理页面。
(2)Step2
:可以新建目录、上传文件。
(3)Step3
:上传文件。
5、下载文件
(1)Step1
:打开文件详情页,或直接打开更多菜单栏直接下载。
(2)Step2
:直接下载,或者复制 URL下载。
6、删除文件、删除存储空间
(1)删除文件。
(2)删除存储空间。
三、使用 Java SDK 操作 OSS(重点)
1、首先需要创建 Accesskey
(1)为什么使用AccessKey ?
AccessKey 就相当于一个账号和密码,但其使用场景不同,其等同于一个子账号。 比如:
你需要一个账号用来登陆 阿里云,此时的用户名、密码可用于访问 OSS,但是如果你在程序中使用这个账号去管理 OSS,那么容易造成你的账号泄露,不安全。
AccessKey 就相当于一个子账号,其专门用来访问 OSS或者其他服务,不能用于登陆阿里云,这样就可以避免阿里云账号泄露。
(2)创建 Accesskey
Step1
:进入控制台
Step2
:点击头像,选择 Accesskey 管理。
Step3
:选择子用户 Accesskey
Step4
:进入 RAM 访问控制后,选择用户,创建用户。
Step5
:填写相关信息,需要验证手机号。
注意
创建成功后,查看AccessKey ID和AccessKey Secret。记得一定要单击下载CSV文件,下载AccessKey信息。或者单击复制,复制AccessKey信息。
因为RAM用户的AccessKey Secret只在创建时显示,不提供查询,要妥善保管。
若AccessKey泄露或丢失,则需要创建新的AccessKey,最多允许为每个RAM用户创建2个AccessKey。
[参考地址]https://help.aliyun.com/document_detail/38738.html
Step6:修改权限。
2、使用 Java SDK 访问 OSS(比如上传文件)
【参考文档操作:】 https://help.aliyun.com/document_detail/32008.html?spm=a2c4g.11186623.6.767.6fafc06dbZUvg7
(1)创建一个 SpringBoot项目,采用 maven
方式引入SDK。
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.8.0</version>
</dependency>
(2)使用文件流方式上传图片。
此处未与前端代码结合,直接使用本地指定文件的方式进行测试。
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
@SpringBootTest
class TestOssApplicationTests {
@Test
void testUpdateOss() {
// Endpoint以上海为例,其它Region请按实际情况填写。
String endpoint = "http://oss-cn-shanghai.aliyuncs.com";
// 云账号AccessKey有所有API访问权限,建议遵循阿里云安全最佳实践,创建并使用RAM子账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建。
String accessKeyId = "LTAI4GFaU9tbzYLLDBY2Neqt";
String accessKeySecret = "ynSYOKMnRFWd79u9t6VDNJrbrXNaeQ";
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// 上传文件流。
InputStream inputStream = null;
try {
inputStream = new FileInputStream("/Users/images/111.jpg");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
ossClient.putObject("Bucket名称", "0c9f3a09a7755c0b8605795bbf1d69de.png", inputStream);
// 关闭OSSClient。
ossClient.shutdown();
}
}
可以看到图片已经上传成功了
至此,我的博客的图片已经存储在阿里云OSS上了
ok,今天就先到这里,Bye
注意:本文归作者所有,未经作者允许,不得转载