Giter Site home page Giter Site logo

guonaihong / goss Goto Github PK

View Code? Open in Web Editor NEW

This project forked from eleven26/goss

0.0 1.0 0.0 213 KB

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

Home Page: https://blog.baiguiren.com/goss/

License: MIT License

Go 98.84% Makefile 1.16%

goss's Introduction

goss

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

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、minio
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:

# minio 配置
minio:
  endpoint:
  bucket:
  access_key:
  secret_key:
  use_ssl: false

样例配置:

比如,如果只是使用阿里云 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

根据前缀获取文件列表。

minio 最多返回 1000 个,其他的有多少返回多少。

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

Size

获取云存储文件大小。

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

参考文档

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

goss's People

Contributors

eleven26 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.