63 lines
1.8 KiB
Go
63 lines
1.8 KiB
Go
|
package utils
|
|||
|
|
|||
|
import (
|
|||
|
"Lee-WineList/config"
|
|||
|
"fmt"
|
|||
|
"git.echol.cn/loser/logger/log"
|
|||
|
"github.com/aliyun/aliyun-oss-go-sdk/oss"
|
|||
|
"io"
|
|||
|
)
|
|||
|
|
|||
|
type ossUtils struct{}
|
|||
|
|
|||
|
func OssUtils() *ossUtils {
|
|||
|
return &ossUtils{}
|
|||
|
}
|
|||
|
|
|||
|
// UploadReader 上传文件 - io.Reader
|
|||
|
func (o ossUtils) UploadReader(fileName string, data io.Reader) (string, error) {
|
|||
|
// 创建OSSClient实例。
|
|||
|
client, err := oss.New(config.Scd.Aliyun.Oss.Endpoint, config.Scd.Aliyun.Oss.AccessKeyId, config.Scd.Aliyun.Oss.AccessKeySecret)
|
|||
|
if err != nil {
|
|||
|
log.Errorf("创建OSSClient实例失败: %s", err)
|
|||
|
return "", err
|
|||
|
}
|
|||
|
// 获取存储空间。
|
|||
|
bucket, err := client.Bucket(config.Scd.Aliyun.Oss.Bucket)
|
|||
|
if err != nil {
|
|||
|
log.Errorf("获取存储空间失败: %s", err)
|
|||
|
return "", err
|
|||
|
}
|
|||
|
// 指定存储类型为标准存储,默认为标准存储。
|
|||
|
storageType := oss.ObjectStorageClass(oss.StorageStandard)
|
|||
|
// 指定访问权限为公共读,默认为继承bucket的权限。
|
|||
|
objectAcl := oss.ObjectACL(oss.ACLPublicRead)
|
|||
|
// 上传文件
|
|||
|
err = bucket.PutObject(fileName, data, storageType, objectAcl)
|
|||
|
if err != nil {
|
|||
|
log.Errorf("上传文件失败: %s", err)
|
|||
|
return "", err
|
|||
|
}
|
|||
|
fileUrl := fmt.Sprintf("https://%s.%s/%s", config.Scd.Aliyun.Oss.Bucket, config.Scd.Aliyun.Oss.Endpoint, fileName)
|
|||
|
return fileUrl, err
|
|||
|
}
|
|||
|
|
|||
|
func (o ossUtils) GetFile(fileName, localFilePath string) error {
|
|||
|
client, err := oss.New(config.Scd.Aliyun.Oss.Endpoint, config.Scd.Aliyun.Oss.AccessKeyId, config.Scd.Aliyun.Oss.AccessKeySecret)
|
|||
|
if err != nil {
|
|||
|
log.Errorf("创建OSSClient实例失败: %s", err)
|
|||
|
return err
|
|||
|
}
|
|||
|
// 获取存储空间。
|
|||
|
bucket, err := client.Bucket(config.Scd.Aliyun.Oss.Bucket)
|
|||
|
if err != nil {
|
|||
|
log.Errorf("获取存储空间失败: %s", err)
|
|||
|
return err
|
|||
|
}
|
|||
|
err = bucket.GetObjectToFile(fileName, localFilePath)
|
|||
|
if err != nil {
|
|||
|
return err
|
|||
|
}
|
|||
|
return nil
|
|||
|
}
|