Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

一个简洁的云存储 golang 库,兼容 amazon s3 协议,支持但不限于阿里云、腾讯云、七牛云、华为云、aws s3、minio。

License

NotificationsYou must be signed in to change notification settings

eleven26/goss

Repository files navigation

goss 是一个简洁的云存储 golang 库,兼容 amazon s3 协议,支持但不限于阿里云腾讯云七牛云华为云aws s3minio

Go ReferenceGo Report CardGocodecovGitHub licenseGitHub go.mod Go versionGitHub release (latest by date)

🚀 安装

go get -u github.com/eleven26/goss/v4

⚙️ 配置

所有支持的配置项:

typeConfigstruct {Endpointstring`yaml:"endpoint"`AccessKeystring`yaml:"access_key"`SecretKeystring`yaml:"secret_key"`Regionstring`yaml:"region"`Bucketstring`yaml:"bucket"`// 如果是使用 minio,并且没有使用 https,需要设置为 trueUseSsl*bool`yaml:"use_ssl"`// 如果是使用 minio,需要设置为 trueHostnameImmutable*bool`yaml:"hostname_immutable"`}

配置的方式,在创建实例的时候通过WithConfig 来传递:

goss,err:=goss.New(goss.WithConfig(&goss.Config{Endpoint:"",AccessKey:"",SecretKey:"",Region:"",Bucket:"",}))

💡 基本用法

  1. 你可以通过下面的代码来导入goss:
import"github.com/eleven26/goss/v4"
  1. 使用之前需要创建实例:
goss,err:=goss.New(goss.WithConfig(&Config{Endpoint:"",AccessKey:"",SecretKey:"",Region:"",Bucket:"",}))
  1. 使用
// goss.GetString 会获取路径指定的文件,返回字符串fmt.Println(goss.GetString(context.TODO(),"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:=goss.Put(context.TODO(),"test/test.txt",r)

PutFromFile

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

err:=goss.PutFromFile(context.TODO(),"test/test.txt","/path/to/test.txt")

Get

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

// rc 是 `io.ReadCloser`rc,err:=goss.Get(context.TODO(),"test/test.txt")deferrc.Close()bs,err:=io.ReadAll(rc)fmt.Println(string(bs))

GetString

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

content,err:=goss.GetString(context.TODO(),"test/test.txt")fmt.Println(content)

GetBytes

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

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

GetToFile

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

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

Delete

删除云存储文件。

err:=goss.Delete(context.TODO(),"test/test.txt")

Exists

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

exists,err:=goss.Exists(context.TODO(),"test/test.txt")

Files

根据前缀获取文件列表。

exists,err:=goss.Files(context.TODO(),"test/")

Size

获取云存储文件大小。

size,err:=goss.Size(context.TODO(),"test/test.txt")

参考文档

  1. 阿里云对象存储
  2. 腾讯云对象存储
  3. 七牛云对象存储
  4. 华为云对象存储
  5. aws s3
  6. minio

各云厂商对 s3 的支持

  1. 阿里云: OSS与Amazon S3的兼容性
  2. 腾讯云: 使用 AWS S3 SDK 访问 COS
  3. 七牛云: AWS S3 兼容
  4. 华为云:支持 s3,但是官网文档找不到相关关于 s3 兼容的相关描述
  5. minio: AWS S3 Compatibility

注意事项

  1. 七牛云的endpointregion 配置请参考这个文档:AWS S3 兼容 - 服务域名

Changelog

[4.0.0] - 2023-09-28

Changed

  • 所有方法添加context.Context 作为第一个参数。

About

一个简洁的云存储 golang 库,兼容 amazon s3 协议,支持但不限于阿里云、腾讯云、七牛云、华为云、aws s3、minio。

Topics

Resources

License

Stars

Watchers

Forks


[8]ページ先頭

©2009-2025 Movatter.jp