package controllers import ( "eta/eta_forum_admin/models" "eta/eta_forum_admin/services" "eta/eta_forum_admin/utils" "fmt" "os" "path" "time" ) type ReportController struct { BaseAuthController } // @Title 图片上传 // @Description 图片上传接口 // @Param File query file true "文件" // @Success 200 上传成功 // @router /uploadImg [post] func (this *ReportController) UploadImg() { //br := new(models.BaseResponse).Init() var err error defer func() { if err != nil { utils.FileLog.Info("UploadImg", "err", err) } }() f, h, err := this.GetFile("file") if err != nil { err = fmt.Errorf("获取文件失败,Err:%v", err) return } defer f.Close() //关闭上传文件 ext := path.Ext(h.Filename) dateDir := time.Now().Format("20060102") uploadDir := utils.STATIC_DIR + "hongze/" + dateDir err = os.MkdirAll(uploadDir, utils.DIR_MOD) if err != nil { err = fmt.Errorf("创建文件夹失败,Err:%v", err) return } randStr := utils.GetRandStringNoSpecialChar(28) fileName := randStr + ext fpath := uploadDir + "/" + fileName err = this.SaveToFile("file", fpath) if err != nil { err = fmt.Errorf("保存文件失败,Err:%v", err) return } defer func() { os.Remove(fpath) }() // 上传文件 resourceUrl := `` ossClient := services.NewOssClient() if ossClient == nil { err = fmt.Errorf("初始化OSS服务失败") return } // 上传到阿里云 ossDir := utils.UploadDir + "images/" savePath := ossDir + time.Now().Format("200601/20060102/") + fileName resourceUrl, err = ossClient.UploadFile(fileName, fpath, savePath) if err != nil { err = fmt.Errorf("文件上传失败,Err:%v", err) return } item := new(models.Resource) item.ResourceUrl = resourceUrl item.ResourceType = 1 item.CreateTime = time.Now() newId, err := models.AddResource(item) if err != nil { err = fmt.Errorf("保存资源失败,Err:%v", err) return } resp := new(models.ResourceResp) resp.Id = newId resp.ResourceUrl = resourceUrl this.Data["json"] = map[string]string{"link": resourceUrl} this.ServeJSONOther() }