mh_goadmin_server/app/admin/apis/public/file.go
2023-10-17 10:32:08 +08:00

105 lines
3.0 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 public
import (
"encoding/base64"
"errors"
"fmt"
"io/ioutil"
"strings"
"github.com/gin-gonic/gin"
"github.com/google/uuid"
imgType "github.com/shamsher31/goimgtype"
"go-admin/pkg/utils"
"go-admin/tools"
"go-admin/tools/app"
)
type FileResponse struct {
Size int64 `json:"size"`
Path string `json:"path"`
FullPath string `json:"full_path"`
Name string `json:"name"`
Type string `json:"type"`
}
// @Summary 上传图片
// @Description 获取JSON
// @Tags system/公共接口
// @Accept multipart/form-data
// @Param type query string true "type" (1单图2多图, 3base64图片)
// @Param file formData file true "file"
// @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
// @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
// @Router /api/v1/public/uploadFile [post]
func UploadFile(c *gin.Context) {
tag, _ := c.GetPostForm("type")
urlPerfix := fmt.Sprintf("http://%s/", c.Request.Host)
var fileResponse FileResponse
if tag == "" {
app.Error(c, 200, errors.New(""), "缺少标识")
return
} else {
switch tag {
case "1": // 单图
files, err := c.FormFile("file")
if err != nil {
app.Error(c, 200, errors.New(""), "图片不能为空")
return
}
// 上传文件至指定目录
guid := uuid.New().String()
singleFile := "static/uploadfile/" + guid + utils.GetExt(files.Filename)
_ = c.SaveUploadedFile(files, singleFile)
fileType, _ := imgType.Get(singleFile)
fileResponse = FileResponse{
Size: tools.GetFileSize(singleFile),
Path: singleFile,
FullPath: urlPerfix + singleFile,
Name: files.Filename,
Type: fileType,
}
app.OK(c, fileResponse, "上传成功")
return
case "2": // 多图
files := c.Request.MultipartForm.File["file"]
var multipartFile []FileResponse
for _, f := range files {
guid := uuid.New().String()
multipartFileName := "static/uploadfile/" + guid + utils.GetExt(f.Filename)
e := c.SaveUploadedFile(f, multipartFileName)
fileType, _ := imgType.Get(multipartFileName)
if e == nil {
multipartFile = append(multipartFile, FileResponse{
Size: tools.GetFileSize(multipartFileName),
Path: multipartFileName,
FullPath: urlPerfix + multipartFileName,
Name: f.Filename,
Type: fileType,
})
}
}
app.OK(c, multipartFile, "上传成功")
return
case "3": // base64
files, _ := c.GetPostForm("file")
file2list := strings.Split(files, ",")
ddd, _ := base64.StdEncoding.DecodeString(file2list[1])
guid := uuid.New().String()
base64File := "static/uploadfile/" + guid + ".jpg"
_ = ioutil.WriteFile(base64File, ddd, 0666)
typeStr := strings.Replace(strings.Replace(file2list[0], "data:", "", -1), ";base64", "", -1)
fileResponse = FileResponse{
Size: tools.GetFileSize(base64File),
Path: base64File,
FullPath: urlPerfix + base64File,
Name: "",
Type: typeStr,
}
app.OK(c, fileResponse, "上传成功")
}
}
}