goss - 一个简洁的对象存储库

goss

goss 是一个简洁的云存储 golang 库,支持阿里云腾讯云七牛云华为云aws s3

Go Reference
Go Report Card
Go
codecov
GitHub license
GitHub go.mod Go version
GitHub release (latest by date)

🚀 安装

go get -u github.com/eleven26/goss

⚙️ 配置

所有支持的配置项:

# 云存储类型
# 可选值为: aliyun、tencent、qiniu、huawei、s3
driver: aliyun

# 阿里云 oss 配置
aliyun:
  # oss 的链接,不同区域不同
  endpoint:
  # bucket
  bucket:
  access_key_id:
  access_key_secret:

# 腾讯云 cos 配置 
tencent:
  # 腾讯云 bucket 对应的的 url
  url:
  secret_id:
  secret_key:

# 七牛云 kodo 配置
qiniu:
  # bucket 名称
  bucket:
  access_key:
  secret_key:
  # bucket 外链域名
  domain:
  # 是否是私有空间
  private:

# 华为云 obs 配置
huawei:
  endpoint:
  location:
  bucket:
  access_key:
  secret_key:

# aws s3 配置
s3:
  endpoint:
  region:
  bucket:
  access_key:
  secret_key:

样例配置:

比如,如果只是使用阿里云 oss,则只需添加以下配置项就可以了:

driver: aliyun

aliyun:
  endpoint: oss-cn-shenzhen.aliyuncs.com
  bucket: images
  access_key_id: LT2I316210b3JlXj
  access_key_secret: 4IZq10e233Ya1ZS18JDG0ZfvBBnYva

💡 基本用法

  1. 你可以通过下面的代码来导入 goss:
import "github.com/eleven26/goss/goss"
  1. 使用之前需要创建实例:
// path 是配置文件的路径
path := "./goss.yml"
goss, err := goss.New(path)
// storage 是云存储对象
storage := goss.Storage
  1. 使用
// storage.GetString 会获取路径指定的文件,返回字符串
fmt.Println(storage.GetString("test/foo.txt"))

📚 接口

goss 支持以下操作:

Put

上传文件到云存储。第一个参数是 key,第二个参数是 io.Reader

data := []byte("this is some data stored as a byte slice in Go Lang!")
r := bytes.NewReader(data)
err := storage.Put("test/test.txt", r)

PutFromFile

上传文件到云存储。第一个参数是 key,第二个参数是本地文件路径。

err := storage.PutFromFile("test/test.txt", "/path/to/test.txt")

Get

从云存储获取文件,返回字符串。参数是 key。返回值是 io.ReadClosererror

// rc 是 `io.ReadCloser`
rc, err := storage.Get("test/test.txt")
defer rc.Close()

bs, err := io.ReadAll(rc)
fmt.Println(string(bs))

GetString

从云存储获取文件,返回字符串。参数是 key。返回值是 stringerror

content, err := storage.GetString("test/test.txt")
fmt.Println(content)

GetBytes

从云存储获取文件,返回字符串。参数是 key。返回值是 []byteerror

bs, err := storage.GetBytes("test/test.txt")
fmt.Println(string(bs))

GetToFile

下载云存储文件到本地。第一个参数是 key,第二个参数是本地路径。

// 第一个参数是云端路径,第二个参数是本地路径
err := storage.GetToFile("test/test.txt", "/path/to/local")

Delete

删除云存储文件。

err := storage.Delete("test/test.txt")

Exists

判断云存储文件是否存在。

exists, err := storage.Exists("test/test.txt")

Files

根据前缀获取文件列表。

exists, err := storage.Files("test/")

Size

获取云存储文件大小。

size, err := storage.Size("test/test.txt")

参考文档

  1. 阿里云对象存储
  2. 腾讯云对象存储
  3. 七牛云对象存储
  4. 华为云对象存储
  5. aws s3
posted @ 2022-11-08 10:02  佚名000  阅读(277)  评论(0编辑  收藏  举报