- Notifications
You must be signed in to change notification settings - Fork14
一个简洁的云存储 golang 库,兼容 amazon s3 协议,支持但不限于阿里云、腾讯云、七牛云、华为云、aws s3、minio。
License
NotificationsYou must be signed in to change notification settings
eleven26/goss
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
✨goss
是一个简洁的云存储 golang 库,兼容 amazon s3 协议,支持但不限于阿里云、腾讯云、七牛云、华为云、aws s3、minio。
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:"",}))
- 你可以通过下面的代码来导入
goss
:
import"github.com/eleven26/goss/v4"
- 使用之前需要创建实例:
goss,err:=goss.New(goss.WithConfig(&Config{Endpoint:"",AccessKey:"",SecretKey:"",Region:"",Bucket:"",}))
- 使用
// goss.GetString 会获取路径指定的文件,返回字符串fmt.Println(goss.GetString(context.TODO(),"test/foo.txt"))
goss
支持以下操作:
上传文件到云存储。第一个参数是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)
上传文件到云存储。第一个参数是key
,第二个参数是本地文件路径。
err:=goss.PutFromFile(context.TODO(),"test/test.txt","/path/to/test.txt")
从云存储获取文件。参数是key
。返回值是io.ReadCloser
和error
。
// rc 是 `io.ReadCloser`rc,err:=goss.Get(context.TODO(),"test/test.txt")deferrc.Close()bs,err:=io.ReadAll(rc)fmt.Println(string(bs))
从云存储获取文件。参数是key
。返回值是string
和error
content,err:=goss.GetString(context.TODO(),"test/test.txt")fmt.Println(content)
从云存储获取文件。参数是key
。返回值是[]byte
和error
bs,err:=goss.GetBytes(context.TODO(),"test/test.txt")fmt.Println(string(bs))
下载云存储文件到本地。第一个参数是key
,第二个参数是本地路径。
// 第一个参数是云端路径,第二个参数是本地路径err:=goss.GetToFile(context.TODO(),"test/test.txt","/path/to/local")
删除云存储文件。
err:=goss.Delete(context.TODO(),"test/test.txt")
判断云存储文件是否存在。
exists,err:=goss.Exists(context.TODO(),"test/test.txt")
根据前缀获取文件列表。
exists,err:=goss.Files(context.TODO(),"test/")
获取云存储文件大小。
size,err:=goss.Size(context.TODO(),"test/test.txt")
- 阿里云: OSS与Amazon S3的兼容性
- 腾讯云: 使用 AWS S3 SDK 访问 COS
- 七牛云: AWS S3 兼容
- 华为云:支持 s3,但是官网文档找不到相关关于 s3 兼容的相关描述
- minio: AWS S3 Compatibility
- 七牛云的
endpoint
和region
配置请参考这个文档:AWS S3 兼容 - 服务域名
- 所有方法添加
context.Context
作为第一个参数。
About
一个简洁的云存储 golang 库,兼容 amazon s3 协议,支持但不限于阿里云、腾讯云、七牛云、华为云、aws s3、minio。