diff --git a/aliyun.go b/aliyun.go index cb38d5a..892c934 100644 --- a/aliyun.go +++ b/aliyun.go @@ -5,11 +5,12 @@ import ( "io" ) -// AliYun 阿里云 OSS 存储 +// AliYun 阿里云 type AliYun struct { - Endpoint string AccessKeyId string AccessKeySecret string + Endpoint string + BucketName string error error // 错误信息 client *oss.Client // 驱动 bucket *oss.Bucket // 存储空间 @@ -17,8 +18,8 @@ type AliYun struct { // NewAliYun 初始化 // https://help.aliyun.com/document_detail/32144.html -func NewAliYun(endpoint, accessKeyId, accessKeySecret, bucketName string) *AliYun { - app := &AliYun{Endpoint: endpoint, AccessKeyId: accessKeyId, AccessKeySecret: accessKeySecret} +func NewAliYun(accessKeyId, accessKeySecret, endpoint, bucketName string) *AliYun { + app := &AliYun{AccessKeyId: accessKeyId, AccessKeySecret: accessKeySecret, Endpoint: endpoint, BucketName: bucketName} app.client, app.error = oss.New(endpoint, accessKeyId, accessKeySecret) app.bucket, app.error = app.client.Bucket(bucketName) return app diff --git a/baidu.go b/baidu.go index a613a45..b47fc71 100644 --- a/baidu.go +++ b/baidu.go @@ -1 +1,48 @@ package gostorage + +import ( + "github.com/baidubce/bce-sdk-go/bce" + "github.com/baidubce/bce-sdk-go/services/bos" + "io" +) + +// Baidu 百度云 +type Baidu struct { + AccessKey string + SecretAccessKey string + Endpoint string + BucketName string + error error // 错误信息 + client *bos.Client // 驱动 +} + +// NewBaidu 初始化 +// https://cloud.baidu.com/doc/BOS/s/4jwvyry1p +func NewBaidu(accessKey string, secretAccessKey, endpoint, bucketName string) *Baidu { + app := &Baidu{AccessKey: accessKey, SecretAccessKey: secretAccessKey, Endpoint: endpoint, BucketName: bucketName} + clientConfig := bos.BosClientConfiguration{ + Ak: accessKey, + Sk: secretAccessKey, + Endpoint: endpoint, + RedirectDisabled: false, + } + app.client, app.error = bos.NewClientWithConfig(&clientConfig) + return app +} + +// PutObject 上传文件流 +// @param file 文件流 +// @param filePath 文件路径 +// @param fileName 文件名称 +func (c *Baidu) PutObject(file io.Reader, filePath, fileName string) (resp FileInfo, err error) { + objectKey := filePath + if fileName != "" { + objectKey = filePath + "/" + fileName + } + bodyStream, err := bce.NewBodyFromSizedReader(file, -1) + _, err = c.client.PutObject(c.BucketName, objectKey, bodyStream, nil) + resp.Path = filePath + resp.Name = fileName + resp.Url = objectKey + return +} diff --git a/go.mod b/go.mod index 0342d78..e55afdb 100644 --- a/go.mod +++ b/go.mod @@ -4,6 +4,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/tencentyun/cos-go-sdk-v5 v0.7.34 ) diff --git a/go.sum b/go.sum index be94f7d..a37eb55 100644 --- a/go.sum +++ b/go.sum @@ -1,6 +1,8 @@ github.com/QcloudApi/qcloud_sign_golang v0.0.0-20141224014652-e4130a326409/go.mod h1:1pk82RBxDY/JZnPQrtqHlUFfCctgdorsd9M06fMynOM= github.com/aliyun/aliyun-oss-go-sdk v2.2.3+incompatible h1:KlwIELiuuvj7uMeEXrgXecPE3+xz/gGsDSnhL6Eztq0= github.com/aliyun/aliyun-oss-go-sdk v2.2.3+incompatible/go.mod h1:T/Aws4fEfogEE9v+HPhhw+CntffsBHJ8nXQCwKr0/g8= +github.com/baidubce/bce-sdk-go v0.9.114 h1:TPloS5n0zV/WdHxB4evzO1PCJ0fl9cXOOwSofbpFHn4= +github.com/baidubce/bce-sdk-go v0.9.114/go.mod h1:zbYJMQwE4IZuyrJiFO8tO8NbtYiKTFTbwh4eIsqjVdg= github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f h1:ZNv7On9kyUzm7fvRZumSyy/IUiSC7AzL0I1jKKtwooA= github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f/go.mod h1:AuiFmCCPBSrqvVMvuqFuk0qogytodnVFVSN5CeJB8Gc= github.com/clbanning/mxj v1.8.4 h1:HuhwZtbyvyOw+3Z1AowPkU87JkJUSv751ELWaiTpj8I= diff --git a/tencent.go b/tencent.go index e2037f9..2ede1b6 100644 --- a/tencent.go +++ b/tencent.go @@ -9,18 +9,20 @@ import ( "net/url" ) +// Tencent 腾讯云 type Tencent struct { - BucketName string // 存储桶名称 - Regions string // 所属地域 SecretID string // 用户的 SecretId SecretKey string // 用户的 SecretKey + BucketName string // 存储桶名称 + Regions string // 所属地域 client *cos.Client // 驱动 + error error // 错误信息 } // NewTencent 初始化 // https://cloud.tencent.com/document/product/436/31215 -func NewTencent(bucketName, regions, secretID, secretKey string) *Tencent { - app := &Tencent{BucketName: bucketName, Regions: regions, SecretID: secretID, SecretKey: secretKey} +func NewTencent(secretID, secretKey, regions, bucketName string) *Tencent { + app := &Tencent{SecretID: secretID, SecretKey: secretKey, Regions: regions, BucketName: bucketName} u, _ := url.Parse(fmt.Sprintf("https://%s.cos.%s.myqcloud.com", bucketName, regions)) su, _ := url.Parse(fmt.Sprintf("https://cos.%s.myqcloud.com", regions)) b := &cos.BaseURL{BucketURL: u, ServiceURL: su}