package controller import ( "errors" "net/http" "github.com/QuantumNous/new-api/common" "github.com/QuantumNous/new-api/model" "github.com/QuantumNous/new-api/service" "github.com/QuantumNous/new-api/setting/operation_setting" "github.com/gin-gonic/gin" ) func ossUploadFail(c *gin.Context, message string) { c.JSON(http.StatusOK, gin.H{ "success": false, "message": message, }) } // OssUpload 通用 OSS 上传(需登录;需在运营设置中启用并填写 OSS 参数)。 func OssUpload(c *gin.Context) { if !operation_setting.IsOssUploadReady() { ossUploadFail(c, service.ErrOssNotConfigured.Error()) return } id := c.GetInt("id") if id == 0 { c.JSON(http.StatusUnauthorized, gin.H{ "success": false, "message": "未授权", }) return } user, err := model.GetUserById(id, false) if err != nil || user == nil { c.JSON(http.StatusUnauthorized, gin.H{ "success": false, "message": "用户无效", }) return } if user.Role < common.FileUploadPermission { ossUploadFail(c, "无上传权限") return } file, err := c.FormFile("file") if err != nil { ossUploadFail(c, "请选择文件字段 file") return } publicURL, err := service.OssUploadMultipartFile(file, id) if err != nil { if errors.Is(err, service.ErrOssNotConfigured) { ossUploadFail(c, err.Error()) return } ossUploadFail(c, err.Error()) return } c.JSON(http.StatusOK, gin.H{ "success": true, "message": "", "data": gin.H{ "url": publicURL, }, }) }