kefu/controller/upload.go

242 lines
5.5 KiB
Go
Raw Permalink Normal View History

2024-12-10 02:50:12 +00:00
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,
},
})
}
}