对象存储是一种稳定、安全、高效、易用的云存储服务,具备标准Restful API接口,可存储任意数量和形式的非结构化数据。
存储空间是用于存储对象(Object)的容器,所有的对象都必须隶属于某个存储空间。存储空间具有各种配置属性,包括地域、访问权限、存储类型等。可以根据实际需求,创建不同类型的存储空间来存储不同的数据。
对象是OSS存储数据的基本单元,也被称为OSS的文件。对象由元信息(Object Meta)、用户数据(Data)和文件名(Key)组成。对象由存储空间内部唯一的Key来标识。对象元信息是一组键值对,表示了对象的一些属性,例如最后修改时间、大小等信息,同时您也可以在元信息中存储一些自定义的信息。
地域表示OSS的数据中心所在物理位置。可以根据费用、请求来源等选择合适的地域创建Bucket。
Endpoint表示OSS对外服务的访问域名。OSS以HTTP RESTful API的形式对外提供服务,当访问不同地域的时候,需要不同的域名。通过内网和外网访问同一个地域所需要的域名也是不同的。
AccessKey简称AK,指的是访问身份验证中用到的AccessKey ID和AccessKey Secret。OSS通过使用AccessKey ID和AccessKey Secret对称加密的方法来验证某个请求的发送者身份。AccessKey ID用于标识用户;AccessKey Secret是用户用于加密签名字符串和OSS用来验证签名字符串的密钥,必须保密。关于获取AccessKey的方法
目前BladeX提供的blade-starter-oss集成了四种oss,分别为:minio、阿里云oss、七牛oss、腾讯oss
blade-starter-oss开放了统一接口,大家可以依葫芦画瓢模仿集成其他所需要的oss
引入格式为blade-starter-oss与对应的oss依赖,若用不到其他的oss可以不引入防止产生冗余的依赖
引入minio依赖
~~~xml
org.springblade
blade-starter-oss
io.minio
minio
~~~
~~~xml
org.springblade
blade-starter-oss
com.aliyun.oss
aliyun-sdk-oss
~~~
~~~xml
org.springblade
blade-starter-oss
com.qiniu
qiniu-java-sdk
~~~
~~~xml
org.springblade
blade-starter-oss
com.qcloud
cos_api
~~~
~~~yaml
oss:
enabled: true
name: minio
tenant-mode: true
endpoint: http://127.0.0.1:9000
access-key: xxxxxxx
secret-key: xxxxxxx
bucket-name: bladex
~~~
enabled
:是否开启oss配置
name
:具体开启的oss类型,minio为minio
,阿里云oss为alioss
,七牛oss为qiniu
,腾讯oss为tencentcos
tenant-mode
:是否开启租户模式,若开启,则会自动匹配将配置的bucket自动加上租户ID
endpoint
:oss对外开放的地址
access-key
:oss提供的accesskey
secret-key
:oss提供的secretkey
bucket-name
:存储桶名,有些oss服务需要手动先创建,有些可以自动创建
OssRule
接口的bean来覆盖默认的BladeOssRule
参考地址如下:https://docs.min.io/cn/
推荐使用前将官方文档简单过一遍,有个大概印象
docker启动参考如下,新版本minio需要定义两个端口,9000为api端口,9090为控制台端口,网页访问9000会自动跳转至9090
shell [root@JD ~]# docker run -d -p 9000:9000 -p 9090:9090 --name minio -e "MINIO_ROOT_USER=自定义用户名" -e "MINIO_ROOT_PASSWORD=自定义密码" minio/minio server /data --address '0.0.0.0:9000' --console-address '0.0.0.0:9090'
~~~xml
org.springblade
blade-starter-oss
io.minio
minio
~~~
~~~yaml
oss:
enabled: true
name: minio
tenant-mode: true
endpoint: http://127.0.0.1:9000
access-key: xxxxxx
secret-key: xxxxxx
bucket-name: bladex
~~~
创建一个Controller,注入MinioTemplate
(如果后续会更换oss,推荐注入OssTemplate
,这样后续修改实现也不需要再修改代码)

使用postman进行调用测试,调用成功

打开minio控制台也发现了我们上传的文件

BladeX对minio进行了定制,可以使用MinioTemplate非常方便地进行minio文件操作
org.springblade.core.minio.MinioTemplate
进行查看