53 lines
1.3 KiB
Go
53 lines
1.3 KiB
Go
|
package api
|
||
|
|
||
|
import (
|
||
|
"blog/global"
|
||
|
"blog/internal/service"
|
||
|
"blog/pkg/app"
|
||
|
"blog/pkg/convert"
|
||
|
"blog/pkg/errorcode"
|
||
|
"blog/pkg/upload"
|
||
|
"github.com/gin-gonic/gin"
|
||
|
)
|
||
|
|
||
|
type Upload struct{}
|
||
|
|
||
|
func NewUpload() Upload {
|
||
|
return Upload{}
|
||
|
}
|
||
|
|
||
|
// @Summary 上传图片
|
||
|
// @Produce json
|
||
|
// @Param type formData int true "文件类型1图片" required Enums(1,2,3)
|
||
|
// @Param state formData file true "文件"
|
||
|
// @Success 200 {object} service.FileInfo "成功"
|
||
|
// @Failure 400 {object} errorcode.Error "请求错误"
|
||
|
// @Failure 500 {object} errorcode.Error "内部错误"
|
||
|
// @Router /upload/file [post]
|
||
|
func (u Upload) UploadFile(c *gin.Context) {
|
||
|
response := app.NewResponse(c)
|
||
|
file, fileHeader, err := c.Request.FormFile("file")
|
||
|
if err != nil {
|
||
|
response.ToErrorResponse(errorcode.InvalidParams.WithDetails(err.Error()))
|
||
|
return
|
||
|
}
|
||
|
|
||
|
fileType := convert.StrTo(c.PostForm("type")).MustInt()
|
||
|
if fileHeader == nil || fileType <= 0 {
|
||
|
response.ToErrorResponse(errorcode.InvalidParams)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
svc := service.New(c.Request.Context())
|
||
|
fileInfo, err := svc.UploadFile(upload.FileType(fileType), file, fileHeader)
|
||
|
if err != nil {
|
||
|
global.Logger.Errorf("svc.UploadFile err: %v", err)
|
||
|
response.ToErrorResponse(errorcode.ErrorUploadFileFail.WithDetails(err.Error()))
|
||
|
return
|
||
|
}
|
||
|
|
||
|
response.ToResponse(gin.H{
|
||
|
"file_access_url": fileInfo.AccessUrl,
|
||
|
})
|
||
|
}
|