64 lines
1.6 KiB
Go
64 lines
1.6 KiB
Go
package admin
|
||
|
||
import (
|
||
"blog/internal/model/admin"
|
||
"blog/third_party/database"
|
||
"time"
|
||
|
||
"github.com/google/uuid"
|
||
"github.com/kataras/iris/v12"
|
||
"github.com/kataras/iris/v12/sessions"
|
||
"gorm.io/gorm"
|
||
)
|
||
|
||
type FileController struct {
|
||
Ctx iris.Context
|
||
Session *sessions.Session
|
||
}
|
||
|
||
type uploadResponse struct {
|
||
Success int `json:"success"`
|
||
Message string `json:"message"`
|
||
Url string `json:"url"`
|
||
Location string `json:"location"`
|
||
}
|
||
|
||
func (ctrl *FileController) PostUpload() {
|
||
file, fileHeader, err := ctrl.Ctx.FormFile("editormd-image-file")
|
||
if err != nil {
|
||
file, fileHeader, err = ctrl.Ctx.FormFile("file")
|
||
if err != nil {
|
||
return
|
||
}
|
||
}
|
||
fileId := uuid.NewString()
|
||
fileName := fileHeader.Filename
|
||
fileSize := fileHeader.Size
|
||
var bytes []byte = make([]byte, fileSize)
|
||
file.Read(bytes)
|
||
|
||
sysFile := admin.SysFile{Id: fileId, FileName: fileName, FileSize: fileSize, CreateTime: time.Now().UnixMilli(), Data: bytes, State: "1", Del: 0}
|
||
err = database.GormTemplate.Transaction(func(tx *gorm.DB) error {
|
||
err2 := tx.Table("common_files").Create(sysFile).Error
|
||
return err2
|
||
// log.Println(sysFile)
|
||
// return nil
|
||
})
|
||
if err != nil {
|
||
// {
|
||
// success : 0 | 1, // 0 表示上传失败,1 表示上传成功
|
||
// message : "提示的信息,上传成功或上传失败及错误信息等。",
|
||
// url : "图片地址" // 上传成功时才返回
|
||
// }
|
||
ctrl.Ctx.JSON(uploadResponse{Success: 0, Message: "上传失败"})
|
||
return
|
||
}
|
||
|
||
ctrl.Ctx.JSON(uploadResponse{
|
||
Success: 1,
|
||
Message: "上传成功",
|
||
Url: "/file/" + fileId,
|
||
Location: "/file/" + fileId,
|
||
})
|
||
}
|