kefu/controller/upload.go

242 lines
5.5 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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,
},
})
}
}