You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gostorage/huaweicloud.go

55 lines
1.4 KiB

package gostorage
import (
"context"
"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(ctx context.Context, 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(ctx context.Context, 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
}