166 lines
4.7 KiB
Go
166 lines
4.7 KiB
Go
|
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
|
|||
|
//}
|