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/upyun.go

53 lines
1.2 KiB

package gostorage
import (
"context"
"github.com/upyun/go-sdk/v3/upyun"
"io"
)
// Upyun 又拍云
type Upyun struct {
Operator string
Password string
BucketName string
client *upyun.UpYun // 驱动
}
// NewUpyun 初始化
// https://github.com/upyun/go-sdk
func NewUpyun(ctx context.Context, operator string, password string, bucketName string) *Upyun {
app := &Upyun{Operator: operator, Password: password, BucketName: bucketName}
app.client = upyun.NewUpYun(&upyun.UpYunConfig{
Bucket: bucketName,
Operator: operator,
Password: password,
})
return app
}
// Bucket 存储空间
func (c *Upyun) Bucket(name string) *Upyun {
c.BucketName = name
return c
}
// PutObject 上传文件流
// @param file 文件流
// @param filePath 文件路径
// @param fileName 文件名称
func (c *Upyun) PutObject(ctx context.Context, file io.Reader, filePath, fileName, acl string) (resp FileInfo, err error) {
objectKey := filePath
if fileName != "" {
objectKey = filePath + "/" + fileName
}
err = c.client.Put(&upyun.PutObjectConfig{
Path: "/demo.log",
LocalPath: "/tmp/upload",
})
resp.Path = filePath
resp.Name = fileName
resp.Url = objectKey
return
}