UpFile.go 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. package controllers
  2. import (
  3. "Cold_Api/conf"
  4. "crypto/md5"
  5. "fmt"
  6. beego "github.com/beego/beego/v2/server/web"
  7. "math/rand"
  8. "os"
  9. "path"
  10. "time"
  11. )
  12. type UpFileController struct {
  13. beego.Controller
  14. }
  15. func (c *UpFileController) UpFile() {
  16. f, h, _ := c.GetFile("file") //获取上传的文件
  17. ext := path.Ext(h.Filename)
  18. //验证后缀名是否符合要求
  19. var AllowExtMap map[string]bool = map[string]bool{
  20. ".jpg": true,
  21. ".jpeg": true,
  22. ".png": true,
  23. }
  24. if _, ok := AllowExtMap[ext]; !ok {
  25. c.Ctx.WriteString("后缀名不符合上传要求")
  26. return
  27. }
  28. //创建目录
  29. uploadDir := conf.Oss_file // + time.Now().Format("2006/01/02/")
  30. err := os.MkdirAll(uploadDir, 777)
  31. if err != nil {
  32. c.Ctx.WriteString(fmt.Sprintf("%v", err))
  33. return
  34. }
  35. //构造文件名称
  36. rand.Seed(time.Now().UnixNano())
  37. randNum := fmt.Sprintf("%d", rand.Intn(9999)+1000)
  38. hashName := md5.Sum([]byte(time.Now().Format("2006_01_02_15_04_05_") + randNum))
  39. fileName := fmt.Sprintf("%x", hashName) + ext
  40. //this.Ctx.WriteString( fileName )
  41. fpath := uploadDir + fileName
  42. println(fpath)
  43. defer f.Close() //关闭上传的文件,不然的话会出现临时文件不能清除的情况
  44. err = c.SaveToFile("file", fpath)
  45. if err != nil {
  46. c.Ctx.WriteString(fmt.Sprintf("%v", err))
  47. }
  48. c.Ctx.WriteString("{\n \"code\": 0\n ,\"msg\": \"ok!\"\n ,\"data\": {\n \"src\": \"" + conf.Oss + fileName + "\"\n }\n} ")
  49. }
  50. // 列表 -
  51. func (c *UpFileController) ConfigUpFileToken() {
  52. // 验证登录 User_r, User_x
  53. //b_, User_r, _ := lib.Verification(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
  54. //if !b_ {
  55. // c.Data["json"] = lib.JSONS{Code: 302, Msg: "请重新登录!"}
  56. // c.ServeJSON()
  57. // return
  58. //}
  59. //
  60. //c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: lib.UploadToken(c.GetString("T_suffix"))}
  61. //c.ServeJSON()
  62. //return
  63. }