package controllers import ( "bzd_server/conf" "bzd_server/lib" "crypto/md5" "fmt" beego "github.com/beego/beego/v2/server/web" "math/rand" "os" "path" "time" ) type UpFileController struct { beego.Controller } 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, } 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} ") } // 列表 - func (c *UpFileController) ConfigUpFileToken() { // 验证登录 User_r, User_x //b_, User_r, _ := lib.Verification(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey")) //if !b_ { // c.Data["json"] = lib.JSONS{Code: 302, Msg: "请重新登录!"} // c.ServeJSON() // return //} c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: lib.UploadToken(c.GetString("T_suffix"))} c.ServeJSON() return }