package shanghu import ( "context" "duoduo/apis/shanghu/models" "duoduo/conf" "duoduo/tools/app" "fmt" "github.com/gin-gonic/gin" "github.com/qiniu/go-sdk/v7/auth/qbox" "github.com/qiniu/go-sdk/v7/storage" "time" ) func UploadPicture(c *gin.Context) { var inData models.UploadPictureRequest var outData models.UploadPictureReply confIni, err := conf.ConnIni() if err != nil { app.Error(c, 400, err, err.Error()) return } err = c.ShouldBindJSON(&inData) if err != nil { app.Error(c, 400, err, err.Error()) return } for i := 0; i < len(inData.Picture); i++ { //fmt.Println(inData.Pictures[i]) //上传图片 timeUnixNano := time.Now().UnixNano() //单位纳秒 fileName := fmt.Sprintf("%d.jpg", timeUnixNano) //七牛云上传图片 bucket := "imgxx" key := "shanghuka/" + inData.UserCode + "/" + time.Now().Format(time.DateOnly) + "/" + fileName putPolicy := storage.PutPolicy{ Scope: bucket, } mac := qbox.NewMac(confIni.MustValue("ly-qn", "access_key"), confIni.MustValue("ly-qn", "secret_key")) upToken := putPolicy.UploadToken(mac) cfg := storage.Config{} // 空间对应的机房 cfg.Zone = &storage.ZoneHuanan // 是否使用https域名 cfg.UseHTTPS = false // 上传是否使用CDN上传加速 cfg.UseCdnDomains = false // 构建表单上传的对象 baseUploader := storage.NewBase64Uploader(&cfg) ret := storage.PutRet{} //data, err := base64.RawStdEncoding.DecodeString(inData.Pictures[i]) //if err != nil { // app.Error(c, 500, err, "上传图片失败") // return //} err = baseUploader.Put(context.Background(), &ret, upToken, key, []byte(inData.Picture[i]), nil) if err != nil { app.Error(c, 500, err, "上传图片失败") return } outData.Picture = append(outData.Picture, "http://lingyang.shisanmiao.com/"+key) } app.OK(c, outData, app.Success) }