banner.go 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. package controllers
  2. import (
  3. "eta_gn/eta_api/models"
  4. "eta_gn/eta_api/services"
  5. "eta_gn/eta_api/utils"
  6. "github.com/h2non/filetype"
  7. "io/ioutil"
  8. "os"
  9. "path"
  10. "time"
  11. )
  12. type BannerController struct {
  13. BaseAuthController
  14. }
  15. // @router /upload [post]
  16. func (this *BannerController) Upload() {
  17. br := new(models.BaseResponse).Init()
  18. defer func() {
  19. if br.ErrMsg == "" {
  20. br.IsSendEmail = false
  21. }
  22. this.Data["json"] = br
  23. this.ServeJSON()
  24. }()
  25. sysUser := this.SysUser
  26. if sysUser == nil {
  27. br.Msg = "请登录"
  28. br.ErrMsg = "请登录,SysUser Is Empty"
  29. br.Ret = 408
  30. return
  31. }
  32. f, h, err := this.GetFile("file")
  33. if err != nil {
  34. br.Msg = "获取资源信息失败"
  35. br.ErrMsg = "获取资源信息失败,Err:" + err.Error()
  36. return
  37. }
  38. defer f.Close() //关闭上传文件
  39. fileData, e := ioutil.ReadAll(f)
  40. if e != nil {
  41. br.Msg = "上传失败"
  42. br.ErrMsg = "读取文件失败, Err: " + e.Error()
  43. return
  44. }
  45. pass := filetype.IsImage(fileData)
  46. if !pass {
  47. br.Msg = "文件格式有误"
  48. br.ErrMsg = "文件格式有误"
  49. return
  50. }
  51. ext := path.Ext(h.Filename)
  52. dateDir := time.Now().Format("20060102")
  53. uploadDir := utils.STATIC_DIR + "hongze/" + dateDir
  54. err = os.MkdirAll(uploadDir, utils.DIR_MOD)
  55. if err != nil {
  56. br.Msg = "存储目录创建失败"
  57. br.ErrMsg = "存储目录创建失败,Err:" + err.Error()
  58. return
  59. }
  60. randStr := utils.GetRandStringNoSpecialChar(28)
  61. fileName := randStr + ext
  62. fpath := uploadDir + "/" + fileName
  63. err = this.SaveToFile("file", fpath)
  64. if err != nil {
  65. br.Msg = "文件上传失败"
  66. br.ErrMsg = "文件上传失败,Err:" + err.Error()
  67. return
  68. }
  69. defer func() {
  70. os.Remove(fpath)
  71. }()
  72. resourceUrl := ``
  73. ossClient := services.NewOssClient()
  74. if ossClient == nil {
  75. br.Msg = "上传失败"
  76. br.ErrMsg = "初始化OSS服务失败"
  77. return
  78. }
  79. resourceUrl, err = ossClient.UploadFile(fileName, fpath, "")
  80. if err != nil {
  81. br.Msg = "文件上传失败"
  82. br.ErrMsg = "文件上传失败,Err:" + err.Error()
  83. return
  84. }
  85. item := new(models.Resource)
  86. item.ResourceUrl = resourceUrl
  87. item.ResourceType = 1
  88. item.CreateTime = time.Now()
  89. newId, err := models.AddResource(item)
  90. if err != nil {
  91. br.Msg = "资源上传失败"
  92. br.ErrMsg = "资源上传失败,Err:" + err.Error()
  93. return
  94. }
  95. resp := new(models.ResourceResp)
  96. resp.Id = newId
  97. resp.ResourceUrl = resourceUrl
  98. br.Msg = "上传成功"
  99. br.Ret = 200
  100. br.Success = true
  101. br.Data = resp
  102. return
  103. }