写在前面
小白快问快答,老鸟忽略
1. 什么是阿里云对象存储OSS
先上一张官网介绍的图
讲直白一点
可以将阿里云的OSS对象存储理解为一个个 key-value
键值对
- Key:可以理解文件的名称(或路径),它是OSS中存储每个对象的唯一标识符
- Value:文件本身的内容(如图片、视频、文档等),OSS存储的每个对象都是一个文件
在OSS里上传一个文件时,指定一个Key
(比如文件名或路径),然后文件内容(Value
)就会与这个Key绑定,通过这个Key
进行文件的访问或下载,例如,Key
-xxx.jpg
,Value
-文件xxx.jpg
的内容。这种方式让OSS非常灵活,支持存储各种类型的数据,并且能够支持快速检索
2. 使用阿里云OSS存储需要注意什么
防止流量盗刷
OSS存储的文件如果被恶意盗刷,会造成不必要的带宽消耗和费用增加,防止被盗刷的方法在阿里云官方及各类分享中已有不少,简单总结下的话大概有:
-
限制带宽,控制下行速率
-
开启防盗链功能,仅允许来自您的域名(如
www.demo.com
)的请求访问 -
设置Bucket权限为私有,仅通过签名URL或临时授权访问
-
绑定自定义域名并启用HTTPS
-
配合阿里云CDN,将流量引导到缓存节点减少OSS直接请求
-
设置流量监控
来看正文
快速学会使用阿里云对象存储OSS
1. 购买阿里云对象存储OSS并配置好bucket
阿里云官网选择适合需求的OSS对象存储
2. bucket权限控制
根据需求配置好访问权限等
3. 根据官方文档安装好sdk,配置访问凭证
4. 封装阿里云OSS上传pkg以进行调用
以上传文件举例(Go后端)
安装好sdk后,将获取到的访问凭证写入配置文件/常量中(根据需求)
// 阿里云 OSS 配置
var (
Endpoint = "" // 阿里云 OSS Endpoint
OssUrl = "" // 阿里云 OSSUrl
AccessKeyID = "" // AccessKeyID
AccessKeySecret = "" // AccessKeySecret
BucketName = "" // Bucket 名称
)
// 封装阿里云OSS
type AliOSSClient struct {
Client *oss.Client
Bucket *oss.Bucket
}
var OssClient AliOSSClient
// 初始化阿里云OSS
func init() {
client, err := oss.New(Endpoint, AccessKeyID, AccessKeySecret)
if err != nil {
return
}
bucket, err := client.Bucket(BucketName)
if err != nil {
return
}
OssClient = AliOSSClient{
Client: client,
Bucket: bucket,
}
}
func AliOssUpload(objectKey string, buffer bytes.Buffer) (url string, err error) {
err = OssClient.Bucket.PutObject(objectKey, bytes.NewReader(buffer.Bytes()))
if err != nil {
return
}
url = fmt.Sprintf("%s%s", OssUrl, objectKey)
return
}
最后,在需要用到阿里云oss对象存储的地方进行相应的调用即可