mh_goadmin_server/tools/ali/oss.go
2023-09-16 10:56:39 +08:00

166 lines
4.7 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package aliyun
import (
//"bufio"
//"bytes"
//"crypto/md5"
//"fmt"
//"github.com/aliyun/aliyun-oss-go-sdk/oss"
"github.com/aliyun/aliyun-sts-go-sdk/sts"
"github.com/rs/zerolog/log"
//"io"
//"io/ioutil"
//"net/http"
//"path"
)
const (
//AliyunAccessKeyID = "LTAI5tH6oCpPPRufyxqYEHk1"
//AliyunAccessKeySecret = "SqKNm5YWXk097x5mpRMUjEAfEjcYbS"
//AliyunRoleArn = "acs:ram::1069419146450879:role/irui"
//AliyunOssBucketName = "minghui-oss"
AliyunAccessKeyID = "LTAI5t9sZ7ZhEirYKETbEhbJ"
AliyunAccessKeySecret = "mtDxepQAAhzQ7g2aQsB5Hq2339ryAI"
AliyunRoleArn = "acs:ram::1069419146450879:role/aliyunoss"
AliyunOssBucketName = "minghui-oss"
AliyunOssUrl = "https://minghui-oss.oss-cn-shenzhen.aliyuncs.com/"
)
type UploadInfo struct {
AccessKeyId string `json:"access_key_id"`
AccessKeySecret string `json:"access_key_secret"`
Expiration int64 `json:"expiration"`
SecurityToken string `json:"security_token"`
BucketName string `json:"bucket_name"`
}
// uid用来区分sts授予了哪个用户可以传将用户uid转为string传入
// 传入的字符串长度必须大于1
// stsToken的默认有效时间为一小时
func GenStsToken(uid string) (*UploadInfo, error) {
log.Info().Msgf("config.Config.AliyunAccessKeyID:%s", AliyunAccessKeyID)
log.Info().Msgf("config.Config.AliyunAccessKeySecret:%s", AliyunAccessKeySecret)
log.Info().Msgf("config.Config.AliyunRoleArn:%s", AliyunRoleArn)
stsClient := sts.NewClient(AliyunAccessKeyID, AliyunAccessKeySecret, AliyunRoleArn, uid)
resp, err := stsClient.AssumeRole(3600)
if err != nil {
return nil, err
}
log.Error().Msgf("err:%v", err)
log.Info().Msgf("AssumeRole:resp:%v", resp)
uploadInfo := &UploadInfo{
AccessKeyId: resp.Credentials.AccessKeyId,
AccessKeySecret: resp.Credentials.AccessKeySecret,
Expiration: resp.Credentials.Expiration.Unix(),
SecurityToken: resp.Credentials.SecurityToken,
BucketName: AliyunOssBucketName,
}
return uploadInfo, nil
}
//func UploadImageToOss(imgUrl string) (string, error) {
// res, err := http.Get(imgUrl)
// if err != nil {
// log.Info().Msgf("err=%v", err)
// return "", err
// }
// defer res.Body.Close()
//
// // 上传oss
// endpoint := "oss-eu-central-1.aliyuncs.com"
// accessKeyId := config.Config.AliyunAccessKeyID
// accessKeySecret := config.Config.AliyunAccessKeySecret
// bucketName := config.Config.AliyunOssBucketName
//
// client, err := oss.New(endpoint, accessKeyId, accessKeySecret)
// if err != nil {
// log.Error().Msgf("err=%v", err)
// return "", err
// }
//
// bucket, err := client.Bucket(bucketName)
// if err != nil {
// log.Error().Msgf("err=%v", err)
// return "", err
// }
//
// // 获得get请求响应的reader对象
// reader := bufio.NewReaderSize(res.Body, 1000*1024)
// readAll, err := ioutil.ReadAll(reader)
// if err != nil {
// log.Error().Msgf("err=%v", err)
// return "", err
// }
//
// uploadReader := bytes.NewReader(readAll)
// md5Reader := bytes.NewReader(readAll)
//
// md5Handle := md5.New() //创建 md5 句柄
// _, err = io.Copy(md5Handle, md5Reader) //将文件内容拷贝到 md5 句柄中
// if nil != err {
// log.Error().Msgf("err=%v", err)
// return "", err
// }
//
// image := md5Handle.Sum(nil)
// imageKey := fmt.Sprintf("%x", string(image)) + path.Ext(imgUrl)
// //log.Debug().Msgf("mdMD5:%s", string(imageKey))
//
// err = bucket.PutObject(imageKey, uploadReader)
// if err != nil {
// log.Info().Msgf("err=%v", err)
// return "", err
// }
//
// return imageKey, nil
//}
//func UploadFileToOss(filePath string) (string, error) {
// buf, err := ioutil.ReadFile(filePath)
// if err != nil {
// log.Error().Msgf("err=%v", err)
// return "", err
// }
//
// md5Reader := bytes.NewReader(buf)
// md5Handle := md5.New() //创建 md5 句柄
// _, err = io.Copy(md5Handle, md5Reader) //将文件内容拷贝到 md5 句柄中
// if nil != err {
// log.Error().Msgf("err=%v", err)
// return "", err
// }
//
// image := md5Handle.Sum(nil)
// key := fmt.Sprintf("%x", string(image))
//
// // 上传oss
// endpoint := "oss-eu-central-1.aliyuncs.com"
// accessKeyId := config.Config.AliyunAccessKeyID
// accessKeySecret := config.Config.AliyunAccessKeySecret
// bucketName := config.Config.AliyunOssBucketName
//
// client, err := oss.New(endpoint, accessKeyId, accessKeySecret)
// if err != nil {
// log.Error().Msgf("err=%v", err)
// return "", err
// }
//
// bucket, err := client.Bucket(bucketName)
// if err != nil {
// log.Error().Msgf("err=%v", err)
// return "", err
// }
//
// uploadReader := bytes.NewReader(buf)
// err = bucket.PutObject(key, uploadReader)
// if err != nil {
// log.Info().Msgf("err=%v", err)
// return "", err
// }
//
// return key, nil
//}