diff --git a/aliyun.go b/aliyun.go index 892c934..d8276f5 100644 --- a/aliyun.go +++ b/aliyun.go @@ -25,6 +25,12 @@ func NewAliYun(accessKeyId, accessKeySecret, endpoint, bucketName string) *AliYu return app } +// Bucket 存储空间 +func (c *AliYun) Bucket(name string) *AliYun { + c.bucket, c.error = c.client.Bucket(name) + return c +} + // PutObject 上传文件流 // @param file 文件流 // @param filePath 文件路径 diff --git a/baidu.go b/baidu.go index b47fc71..5a0fb7d 100644 --- a/baidu.go +++ b/baidu.go @@ -30,6 +30,12 @@ func NewBaidu(accessKey string, secretAccessKey, endpoint, bucketName string) *B return app } +// Bucket 存储空间 +func (c *Baidu) Bucket(name string) *Baidu { + c.BucketName = name + return c +} + // PutObject 上传文件流 // @param file 文件流 // @param filePath 文件路径 diff --git a/go.mod b/go.mod index e55afdb..00dc255 100644 --- a/go.mod +++ b/go.mod @@ -5,6 +5,7 @@ go 1.18 require ( github.com/aliyun/aliyun-oss-go-sdk v2.2.3+incompatible github.com/baidubce/bce-sdk-go v0.9.114 + github.com/huaweicloud/huaweicloud-sdk-go-obs v3.21.12+incompatible github.com/tencentyun/cos-go-sdk-v5 v0.7.34 ) diff --git a/go.sum b/go.sum index a37eb55..3d37b1c 100644 --- a/go.sum +++ b/go.sum @@ -15,6 +15,8 @@ github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/huaweicloud/huaweicloud-sdk-go-obs v3.21.12+incompatible h1:tANYIteuFrosKbRYUk1Yo/OGJjbt4x3OVg211Qc60M0= +github.com/huaweicloud/huaweicloud-sdk-go-obs v3.21.12+incompatible/go.mod h1:l7VUhRbTKCzdOacdT4oWCwATKyvZqUOlOqr0Ous3k4s= github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= diff --git a/huaweicloud.go b/huaweicloud.go index a613a45..b870a26 100644 --- a/huaweicloud.go +++ b/huaweicloud.go @@ -1 +1,53 @@ package gostorage + +import ( + "github.com/huaweicloud/huaweicloud-sdk-go-obs/obs" + "io" +) + +// Huaweicloud 华为云 +type Huaweicloud struct { + AccessKey string + SecretKey string + Endpoint string + BucketName string + error error // 错误信息 + client *obs.ObsClient // 驱动 +} + +// NewHuaweicloud 初始化 +// https://support.huaweicloud.com/sdk-go-devg-obs/obs_33_0001.html +func NewHuaweicloud(accessKey string, secretKey string, endpoint string, bucketName string) *Huaweicloud { + app := &Huaweicloud{AccessKey: accessKey, SecretKey: secretKey, Endpoint: endpoint, BucketName: bucketName} + app.client, app.error = obs.New(accessKey, secretKey, endpoint) + if app.error == nil { + app.client.Close() // 关闭obsClient + } + return app +} + +// Bucket 存储空间 +func (c *Huaweicloud) Bucket(name string) *Huaweicloud { + c.BucketName = name + return c +} + +// PutObject 上传文件流 +// @param file 文件流 +// @param filePath 文件路径 +// @param fileName 文件名称 +func (c *Huaweicloud) PutObject(file io.Reader, filePath, fileName string) (resp FileInfo, err error) { + objectKey := filePath + if fileName != "" { + objectKey = filePath + "/" + fileName + } + input := &obs.PutObjectInput{} + input.Bucket = c.BucketName + input.Key = objectKey + input.Body = file + _, err = c.client.PutObject(input) + resp.Path = filePath + resp.Name = fileName + resp.Url = objectKey + return +} diff --git a/tencent.go b/tencent.go index 2ede1b6..bd290cc 100644 --- a/tencent.go +++ b/tencent.go @@ -36,6 +36,11 @@ func NewTencent(secretID, secretKey, regions, bucketName string) *Tencent { return app } +// Bucket 存储空间 +func (c *Tencent) Bucket(name string) *Tencent { + return NewTencent(c.SecretID, c.SecretKey, c.Regions, name) +} + // PutObject 上传文件流 // @param file 文件流 // @param filePath 文件路径