filemanager.go 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. package api
  2. import (
  3. "path/filepath"
  4. "crazy-fox-backend-api/model"
  5. "crazy-fox-backend-api/service"
  6. "crazy-fox-backend-api/utils"
  7. "crazy-fox-backend-api/utils/answer"
  8. "crazy-fox-backend-api/utils/fileop"
  9. "github.com/gin-gonic/gin"
  10. )
  11. // fileManagerApi 文件管理器模块
  12. type fileManagerApi struct{}
  13. // List 文件列表
  14. func (Api *fileManagerApi) List(c *gin.Context) {
  15. var listReq model.FileManagerListReq
  16. utils.Verify(&listReq, utils.FileListVerify, c)
  17. // 获取活动列表
  18. list, total := service.FileManager.GetList(listReq)
  19. answer.OkWithDetailed(model.PageResult{List: list, Total: total}, "获取成功", c)
  20. }
  21. // New 新建文件夹
  22. func (Api *fileManagerApi) New(c *gin.Context) {
  23. var req model.FileNameReq
  24. utils.Verify(&req, utils.FileNameVerify, c)
  25. // 新建文件夹
  26. if err := service.FileManager.FileNew(req); err != nil {
  27. answer.FailWithMessage("新建文件夹失败", err, c)
  28. }
  29. answer.OkWithMessage("新建文件夹成功", c)
  30. }
  31. // Del 删除文件或者文件夹
  32. func (Api *fileManagerApi) Del(c *gin.Context) {
  33. var req model.FileNameReq
  34. utils.Verify(&req, utils.FileNameVerify, c)
  35. // 删除文件或者文件夹
  36. if err := service.FileManager.FileDel(req); err != nil {
  37. answer.FailWithMessage("删除文件失败", err, c)
  38. }
  39. answer.OkWithMessage("删除文件成功", c)
  40. }
  41. // Rename 文件或者文件夹重命名
  42. func (Api *fileManagerApi) Rename(c *gin.Context) {
  43. var req model.FileRenameReq
  44. utils.Verify(&req, utils.FileRenameVerify, c)
  45. // 重命名
  46. if err := service.FileManager.FileRename(req); err != nil {
  47. answer.FailWithMessage("重命名失败", err, c)
  48. }
  49. answer.OkWithMessage("重命名成功", c)
  50. }
  51. // Compress 文件压缩
  52. func (Api *fileManagerApi) Compress(c *gin.Context) {
  53. var req model.FileZipReq
  54. utils.Verify(&req, utils.FileListVerify, c)
  55. // 文件压缩
  56. if err := service.FileManager.FileCompress(req); err != nil {
  57. answer.FailWithMessage("文件压缩失败", err, c)
  58. }
  59. answer.OkWithMessage("文件压缩成功", c)
  60. }
  61. // Decompress 文件解压
  62. func (Api *fileManagerApi) Decompress(c *gin.Context) {
  63. var req model.FileZipReq
  64. utils.Verify(&req, utils.FileNameVerify, c)
  65. // 文件解压
  66. if err := service.FileManager.FileDecompress(req); err != nil {
  67. answer.FailWithMessage("文件解压失败", err, c)
  68. }
  69. answer.OkWithMessage("文件解压成功", c)
  70. }
  71. // Upload 文件上传
  72. func (Api *fileManagerApi) Upload(c *gin.Context) {
  73. var req model.FileUploadReq
  74. utils.Verify(&req, utils.FileListVerify, c)
  75. // 文件上传
  76. if err := service.FileManager.FileUpload(req, c); err != nil {
  77. answer.FailWithMessage("文件上传失败", err, c)
  78. }
  79. answer.OkWithMessage("文件上传成功", c)
  80. }
  81. // Download 文件下载
  82. func (Api *fileManagerApi) Download(c *gin.Context) {
  83. c.Writer.Header().Add("is-attachment", "true")
  84. var req model.FileNameReq
  85. utils.Verify(&req, utils.FileNameVerify, c)
  86. // 文件下载
  87. var isDir = false
  88. path, err := service.FileManager.FileDownload(req, &isDir)
  89. if err != nil {
  90. answer.FailWithMessage("文件下载失败", err, c)
  91. }
  92. c.Header("Content-Type", "application/octet-stream")
  93. c.Header("Content-Disposition", "attachment; filename="+filepath.Base(path))
  94. c.File(path)
  95. // 发送后删除压缩文件
  96. if isDir {
  97. _ = fileop.FileDel(path)
  98. }
  99. }