upload.go 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. package admin
  2. import (
  3. "fmt"
  4. "github.com/gin-gonic/gin"
  5. "gopkg.in/gographics/imagick.v3/imagick"
  6. setting "icloudapp.cn/tools/config"
  7. "icloudapp.cn/tools/controller"
  8. "icloudapp.cn/tools/entity"
  9. "icloudapp.cn/tools/model"
  10. sEntity "icloudapp.cn/tools/service/entity"
  11. utFile "icloudapp.cn/tools/util/file"
  12. "time"
  13. )
  14. func Material(ctx *gin.Context) {
  15. file, err := ctx.FormFile("files")
  16. if err != nil {
  17. entity.ResponseNormal(ctx, entity.CodeFileNotExist, err.Error(), []interface{}{})
  18. return
  19. }
  20. upload := utFile.NewUpload(setting.Conf.Upload.Material)
  21. upload.SetAllowed(map[string]bool{
  22. ".jpg": true,
  23. ".png": true,
  24. ".gif": true,
  25. ".jpeg": true,
  26. })
  27. upload.SetHasHash(true)
  28. fileInfo, err := upload.Single(*file)
  29. if err != nil {
  30. entity.ResponseNormal(ctx, entity.CodeCreateDirFail, err.Error(), []interface{}{})
  31. }
  32. image := imagick.NewMagickWand()
  33. if err = image.ReadImage(fileInfo.File); err != nil {
  34. entity.ResponseNormal(ctx, entity.CodeSystemError, err.Error(), []interface{}{})
  35. }
  36. defer image.Destroy()
  37. size := fmt.Sprintf("%dx%d", image.GetImageWidth(), image.GetImageHeight())
  38. material := model.NewMMaterial(ctx)
  39. add, err := material.Add(&sEntity.Material{
  40. UID: controller.GetUID(ctx),
  41. Name: fileInfo.Name,
  42. File: fileInfo.File,
  43. Size: size,
  44. FileSize: fileInfo.Size,
  45. Hash: fileInfo.Hash,
  46. Type: "material",
  47. CreateAt: time.Now(),
  48. })
  49. if err != nil {
  50. entity.ResponseNormal(ctx, entity.CodeSystemError, err.Error(), []interface{}{})
  51. return
  52. }
  53. entity.ResponseSuccess(ctx, add)
  54. }
  55. // Font 字体上传
  56. func Font(ctx *gin.Context) {
  57. file, err := ctx.FormFile("files")
  58. if err != nil {
  59. entity.ResponseNormal(ctx, entity.CodeFileNotExist, err.Error(), []interface{}{})
  60. return
  61. }
  62. upload := utFile.NewUpload(setting.Conf.Upload.Fonts)
  63. upload.SetAllowed(map[string]bool{
  64. ".ttf": true,
  65. ".otf": true,
  66. ".woff": true,
  67. ".fon": true,
  68. ".font": true,
  69. ".eot": true,
  70. ".ttc": true,
  71. })
  72. upload.SetHasHash(true)
  73. fileInfo, err := upload.Single(*file)
  74. if err != nil {
  75. entity.ResponseNormal(ctx, entity.CodeCreateDirFail, err.Error(), []interface{}{})
  76. }
  77. material := model.NewMFonts(ctx)
  78. add, err := material.Add(&sEntity.Font{
  79. Name: ctx.PostForm("name"),
  80. Code: fileInfo.Basename, //basename
  81. Path: fileInfo.File,
  82. FileName: fileInfo.Name,
  83. FileSize: fileInfo.Size,
  84. Hash: fileInfo.Hash,
  85. FileType: fileInfo.Mine,
  86. CreateAt: time.Now(),
  87. })
  88. if err != nil {
  89. entity.ResponseNormal(ctx, entity.CodeSystemError, err.Error(), []interface{}{})
  90. return
  91. }
  92. entity.ResponseSuccess(ctx, add)
  93. }