package controller import ( "fmt" "github.com/gin-gonic/gin" "kefu/common" "kefu/lib" "kefu/models" "kefu/tools" "kefu/types" "log" "os" "path" "strconv" "strings" "time" ) // 上传附件返回后缀 func UploadFileV2(c *gin.Context) { SendAttachment, err := strconv.ParseBool(models.FindConfig("SendAttachment")) if !SendAttachment || err != nil { c.JSON(200, gin.H{ "code": types.ApiCode.UPLOAD_FORBIDDEN, "msg": types.ApiCode.GetMessage(types.ApiCode.UPLOAD_FORBIDDEN), }) return } f, err := c.FormFile("realfile") if err != nil { c.JSON(200, gin.H{ "code": types.ApiCode.FAILED, "msg": types.ApiCode.GetMessage(types.ApiCode.FAILED), "result": err.Error(), }) return } //限制上传大小 maxSize := 20 * 1024 * 1024 uploadMaxSize := models.FindConfig("UploadMaxSize") if uploadMaxSize != "" { uploadMaxSizeInt, _ := strconv.Atoi(uploadMaxSize) maxSize = uploadMaxSizeInt * 1024 * 1024 } if f.Size >= int64(maxSize) { c.JSON(200, gin.H{ "code": types.ApiCode.UPLOAD_OVERSIZE, "msg": types.ApiCode.GetMessage(types.ApiCode.UPLOAD_OVERSIZE), }) return } fileName := tools.Md5(fmt.Sprintf("%s%s", f.Filename, time.Now().String())) fildDir := fmt.Sprintf("%s%d%s/", common.Upload, time.Now().Year(), time.Now().Month().String()) isExist, _ := tools.IsFileExist(fildDir) if !isExist { os.Mkdir(fildDir, os.ModePerm) } fileExt := strings.ToLower(path.Ext(f.Filename)) filepath := fmt.Sprintf("%s%s%s", fildDir, fileName, fileExt) c.SaveUploadedFile(f, filepath) path := "/" + filepath //上传到阿里云oss oss, err := lib.NewOssLib() if err == nil { dstUrl, err := oss.Upload(filepath, filepath) if err == nil { path = dstUrl } } c.JSON(200, gin.H{ "code": 200, "msg": "上传成功!", "result": gin.H{ "path": path, "ext": fileExt, "size": f.Size, "name": f.Filename, }, }) } func UploadAvator(c *gin.Context) { f, err := c.FormFile("imgfile") if err != nil { c.JSON(200, gin.H{ "code": 400, "msg": "上传失败!" + err.Error(), }) return } else { fileExt := strings.ToLower(path.Ext(f.Filename)) if fileExt != ".png" && fileExt != ".jpg" && fileExt != ".gif" && fileExt != ".jpeg" { c.JSON(200, gin.H{ "code": 400, "msg": "上传失败!只允许png,jpg,gif,jpeg文件", }) return } fileName := tools.Md5(fmt.Sprintf("%s%s", f.Filename, time.Now().String())) fildDir := fmt.Sprintf("%savator/%d%s/", common.Upload, time.Now().Year(), time.Now().Month().String()) isExist, _ := tools.IsFileExist(fildDir) if !isExist { err := os.MkdirAll(fildDir, os.ModePerm) if err != nil { c.JSON(200, gin.H{ "code": 400, "msg": "上传失败!" + err.Error(), }) return } } filepath := fmt.Sprintf("%s%s%s", fildDir, fileName, fileExt) c.SaveUploadedFile(f, filepath) path := "/" + filepath //上传到阿里云oss oss, err := lib.NewOssLib() if err == nil { dstUrl, err := oss.Upload(filepath, filepath) if err == nil { path = dstUrl } } if err != nil { log.Println("上传oss:", err) } c.JSON(200, gin.H{ "code": 200, "msg": "上传成功!", "result": gin.H{ "path": path, }, }) } } func UploadEditorImg(c *gin.Context) { f, err := c.FormFile("imgfile") if err != nil { c.JSON(200, gin.H{ "errno": 400, "msg": "上传失败!", }) return } else { fileExt := strings.ToLower(path.Ext(f.Filename)) if fileExt != ".png" && fileExt != ".jpg" && fileExt != ".gif" && fileExt != ".jpeg" { c.JSON(200, gin.H{ "errno": 400, "msg": "上传失败!只允许png,jpg,gif,jpeg文件", }) return } fileName := tools.Md5(fmt.Sprintf("%s%s", f.Filename, time.Now().String())) fildDir := fmt.Sprintf("%s%d%s/", common.Upload, time.Now().Year(), time.Now().Month().String()) isExist, _ := tools.IsFileExist(fildDir) if !isExist { os.Mkdir(fildDir, os.ModePerm) } filepath := fmt.Sprintf("%s%s%s", fildDir, fileName, fileExt) c.SaveUploadedFile(f, filepath) path := "/" + filepath //上传到阿里云oss oss, err := lib.NewOssLib() if err == nil { dstUrl, err := oss.Upload(filepath, filepath) if err == nil { path = dstUrl } } c.JSON(200, gin.H{ "errno": 0, "msg": "上传成功!", "data": gin.H{ "url": path, "alt": "", "href": "", }, }) } } func UploadAudioV2(c *gin.Context) { //SendAttachment, err := strconv.ParseBool(models.FindConfig("SendAttachment")) //if !SendAttachment || err != nil { // c.JSON(200, gin.H{ // "code": 400, // "msg": "禁止上传附件!", // }) // return //} f, err := c.FormFile("realfile") if err != nil { c.JSON(200, gin.H{ "code": 400, "msg": "上传失败!", }) return } else { fileExt := ".mp3" if f.Size >= 20*1024*1024 { c.JSON(200, gin.H{ "code": 400, "msg": "上传失败!不允许超过20M", }) return } fileName := tools.Md5(fmt.Sprintf("%s%s", f.Filename, time.Now().String())) fildDir := fmt.Sprintf("%s%d%s/", common.Upload, time.Now().Year(), time.Now().Month().String()) isExist, _ := tools.IsFileExist(fildDir) if !isExist { os.Mkdir(fildDir, os.ModePerm) } filepath := fmt.Sprintf("%s%s%s", fildDir, fileName, fileExt) c.SaveUploadedFile(f, filepath) path := "/" + filepath //上传到阿里云oss oss, err := lib.NewOssLib() if err == nil { dstUrl, err := oss.Upload(filepath, filepath) if err == nil { path = dstUrl } } c.JSON(200, gin.H{ "code": 200, "msg": "上传成功!", "result": gin.H{ "path": path, }, }) } }