123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- package api
- import (
- "path/filepath"
- "crazy-fox-backend-api/model"
- "crazy-fox-backend-api/service"
- "crazy-fox-backend-api/utils"
- "crazy-fox-backend-api/utils/answer"
- "crazy-fox-backend-api/utils/fileop"
- "github.com/gin-gonic/gin"
- )
- // fileManagerApi 文件管理器模块
- type fileManagerApi struct{}
- // List 文件列表
- func (Api *fileManagerApi) List(c *gin.Context) {
- var listReq model.FileManagerListReq
- utils.Verify(&listReq, utils.FileListVerify, c)
- // 获取活动列表
- list, total := service.FileManager.GetList(listReq)
- answer.OkWithDetailed(model.PageResult{List: list, Total: total}, "获取成功", c)
- }
- // New 新建文件夹
- func (Api *fileManagerApi) New(c *gin.Context) {
- var req model.FileNameReq
- utils.Verify(&req, utils.FileNameVerify, c)
- // 新建文件夹
- if err := service.FileManager.FileNew(req); err != nil {
- answer.FailWithMessage("新建文件夹失败", err, c)
- }
- answer.OkWithMessage("新建文件夹成功", c)
- }
- // Del 删除文件或者文件夹
- func (Api *fileManagerApi) Del(c *gin.Context) {
- var req model.FileNameReq
- utils.Verify(&req, utils.FileNameVerify, c)
- // 删除文件或者文件夹
- if err := service.FileManager.FileDel(req); err != nil {
- answer.FailWithMessage("删除文件失败", err, c)
- }
- answer.OkWithMessage("删除文件成功", c)
- }
- // Rename 文件或者文件夹重命名
- func (Api *fileManagerApi) Rename(c *gin.Context) {
- var req model.FileRenameReq
- utils.Verify(&req, utils.FileRenameVerify, c)
- // 重命名
- if err := service.FileManager.FileRename(req); err != nil {
- answer.FailWithMessage("重命名失败", err, c)
- }
- answer.OkWithMessage("重命名成功", c)
- }
- // Compress 文件压缩
- func (Api *fileManagerApi) Compress(c *gin.Context) {
- var req model.FileZipReq
- utils.Verify(&req, utils.FileListVerify, c)
- // 文件压缩
- if err := service.FileManager.FileCompress(req); err != nil {
- answer.FailWithMessage("文件压缩失败", err, c)
- }
- answer.OkWithMessage("文件压缩成功", c)
- }
- // Decompress 文件解压
- func (Api *fileManagerApi) Decompress(c *gin.Context) {
- var req model.FileZipReq
- utils.Verify(&req, utils.FileNameVerify, c)
- // 文件解压
- if err := service.FileManager.FileDecompress(req); err != nil {
- answer.FailWithMessage("文件解压失败", err, c)
- }
- answer.OkWithMessage("文件解压成功", c)
- }
- // Upload 文件上传
- func (Api *fileManagerApi) Upload(c *gin.Context) {
- var req model.FileUploadReq
- utils.Verify(&req, utils.FileListVerify, c)
- // 文件上传
- if err := service.FileManager.FileUpload(req, c); err != nil {
- answer.FailWithMessage("文件上传失败", err, c)
- }
- answer.OkWithMessage("文件上传成功", c)
- }
- // Download 文件下载
- func (Api *fileManagerApi) Download(c *gin.Context) {
- c.Writer.Header().Add("is-attachment", "true")
- var req model.FileNameReq
- utils.Verify(&req, utils.FileNameVerify, c)
- // 文件下载
- var isDir = false
- path, err := service.FileManager.FileDownload(req, &isDir)
- if err != nil {
- answer.FailWithMessage("文件下载失败", err, c)
- }
- c.Header("Content-Type", "application/octet-stream")
- c.Header("Content-Disposition", "attachment; filename="+filepath.Base(path))
- c.File(path)
- // 发送后删除压缩文件
- if isDir {
- _ = fileop.FileDel(path)
- }
- }
|