package controllers import ( "Cold_Api/controllers/lib" "Cold_Api/models/Account" "fmt" beego "github.com/beego/beego/v2/server/web" ) type UpFileController struct { beego.Controller Admin_r Account.Admin // 登陆的用户 } func (c *UpFileController) Prepare() { GetCookie := c.Ctx.GetCookie("User_tokey") GetString := c.GetString("User_tokey") User_tokey := GetString if len(User_tokey) == 0 { User_tokey = GetCookie } if Account.Admin_r == nil { return } c.Admin_r = *Account.Admin_r } //func (c *UpFileController) UpFile() { // // f, h, _ := c.GetFile("file") //获取上传的文件 // ext := path.Ext(h.Filename) // //验证后缀名是否符合要求 // var AllowExtMap map[string]bool = map[string]bool{ // ".jpg": true, // ".jpeg": true, // ".png": true, // ".pdf": true, // } // if _, ok := AllowExtMap[ext]; !ok { // c.Ctx.WriteString("后缀名不符合上传要求") // return // } // //创建目录 // uploadDir := conf.Oss_file // + time.Now().Format("2006/01/02/") // err := os.MkdirAll(uploadDir, 777) // if err != nil { // c.Ctx.WriteString(fmt.Sprintf("%v", err)) // return // } // //构造文件名称 // rand.Seed(time.Now().UnixNano()) // randNum := fmt.Sprintf("%d", rand.Intn(9999)+1000) // hashName := md5.Sum([]byte(time.Now().Format("2006_01_02_15_04_05_") + randNum)) // // fileName := fmt.Sprintf("%x", hashName) + ext // //this.Ctx.WriteString( fileName ) // // fpath := uploadDir + fileName // println(fpath) // defer f.Close() //关闭上传的文件,不然的话会出现临时文件不能清除的情况 // err = c.SaveToFile("file", fpath) // if err != nil { // c.Ctx.WriteString(fmt.Sprintf("%v", err)) // } // c.Ctx.WriteString("{\n \"code\": 0\n ,\"msg\": \"ok!\"\n ,\"data\": {\n \"src\": \"" + conf.Oss + fileName + "\"\n }\n} ") //} // ConfigUpFileToken 获取七牛云上传Token func (c *UpFileController) ConfigUpFileToken() { c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: lib.UploadToken(c.GetString("T_suffix"))} c.ServeJSON() return } // UploadFile 公共文件上传接口,上传文件到七牛云并返回七牛云文件路径 func (c *UpFileController) UploadFile() { // 获取上传的文件(单文件模式) file, fileHeader, err := c.GetFile("file") if err != nil { c.Data["json"] = lib.JSONS{Code: 202, Msg: "请选择要上传的文件"} c.ServeJSON() return } defer file.Close() // 验证文件大小(500M限制) if fileHeader.Size > 1024*1024*500 { c.Data["json"] = lib.JSONS{Code: 202, Msg: "文件大小超过500M限制"} c.ServeJSON() return } // 上传到七牛云 fileUrl, err := lib.UploadFileToQiniu(fileHeader, "uploads/") if err != nil { c.Data["json"] = lib.JSONS{Code: 202, Msg: fmt.Sprintf("上传文件 %s 到七牛云失败: %v", fileHeader.Filename, err)} c.ServeJSON() return } // 返回成功结果 c.Data["json"] = lib.JSONS{ Code: 200, Msg: "上传成功!", Data: map[string]interface{}{ "url": fileUrl, "name": fileHeader.Filename, "size": fileHeader.Size, }, } c.ServeJSON() return }