|
- package comm
-
- import (
- "applet/app/db"
- "applet/app/e"
- "applet/app/utils/cache"
- "code.fnuoos.com/EggPlanet/egg_models.git/src/implement"
- enum2 "code.fnuoos.com/EggPlanet/egg_system_rules.git/enum"
- "github.com/aliyun/aliyun-oss-go-sdk/oss"
- "github.com/gin-gonic/gin"
- )
-
- // GetOssUrl
- // @Summary 通用请求-对象存储-上传许可链接(获取)
- // @Tags 对象存储
- // @Description 上传许可链接(获取)
- // @Accept json
- // @Produce json
- // @param Authorization header string true "验证参数Bearer和token空格拼接"
- // @Success 200 {string} "许可链接"
- // @Failure 400 {object} md.Response "具体错误"
- // @Router /api/v1/comm/getOssUrl [get]
- func GetOssUrl(c *gin.Context) {
- redisConn := cache.GetPool().Get()
- sysCfgDb := implement.NewSysCfgDb(db.Db, redisConn)
- sysCfgs, err := sysCfgDb.SysCfgGetAll()
- if err != nil {
- e.OutErr(c, e.ERR_DB_ORM, err.Error())
- return
- }
- if sysCfgs == nil {
- e.OutErr(c, e.ERR_CFG_CACHE, nil)
- return
- }
-
- cfgMap := make(map[string]string, len(*sysCfgs))
- for _, cfg := range *sysCfgs {
- cfgMap[cfg.Key] = cfg.Val
- }
- endpoint := cfgMap[enum2.AliyunOss(enum2.AliyunOssEndpoint).String()]
- bucketName := cfgMap[enum2.AliyunOss(enum2.AliyunOssBucketName).String()]
- objectName := cfgMap[enum2.AliyunOss(enum2.AliyunOssBucketScheme).String()]
- accessKeyID := cfgMap[enum2.AliyunOss(enum2.AliyunOssAccessKeyID).String()]
- accessKeySecret := cfgMap[enum2.AliyunOss(enum2.AliyunOssAccessKeySecret).String()]
-
- client, err := oss.New(endpoint, accessKeyID, accessKeySecret)
- if err != nil {
- e.OutErr(c, e.ERR_AES_ENCODE, err.Error())
- return
- }
- bucket, err := client.Bucket(bucketName)
- if err != nil {
- e.OutErr(c, e.ERR_AES_ENCODE, err.Error())
- return
- }
- signedURL, err := bucket.SignURL(objectName, oss.HTTPPut, 60*5)
- if err != nil {
- e.OutErr(c, e.ERR_AES_ENCODE, err.Error())
- return
- }
-
- e.OutSuc(c, signedURL, nil)
- }
|