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 //}