From 6613c8a6c1b8aae4427a05a406d8e8081dc1166d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=AE=E5=87=89?= <927625802@qq.com> Date: Sat, 8 Jan 2022 22:09:27 +0800 Subject: [PATCH] :sparkler: file delete --- server/controllers/file/delete.go | 45 +++++++++++++++++++ .../controllers/{file.go => file/upload.go} | 4 +- server/router.go | 4 +- 3 files changed, 50 insertions(+), 3 deletions(-) create mode 100644 server/controllers/file/delete.go rename server/controllers/{file.go => file/upload.go} (96%) diff --git a/server/controllers/file/delete.go b/server/controllers/file/delete.go new file mode 100644 index 00000000..0eb0012f --- /dev/null +++ b/server/controllers/file/delete.go @@ -0,0 +1,45 @@ +package file + +import ( + "errors" + "github.com/Xhofe/alist/drivers/base" + "github.com/Xhofe/alist/drivers/operate" + "github.com/Xhofe/alist/server/common" + "github.com/Xhofe/alist/utils" + "github.com/gin-gonic/gin" +) + +type DeleteFilesReq struct { + Path string `json:"path"` + Names []string `json:"names"` +} + +func DeleteFiles(c *gin.Context) { + var req DeleteFilesReq + if err := c.ShouldBind(&req); err != nil { + common.ErrorResp(c, err, 400) + return + } + if len(req.Names) == 0 { + common.ErrorResp(c, errors.New("empty file names"), 400) + return + } + for i, name := range req.Names { + account, path_, driver, err := common.ParsePath(utils.Join(req.Path, name)) + if err != nil { + common.ErrorResp(c, err, 500) + return + } + clearCache := false + if i == len(req.Names)-1 { + clearCache = true + } + err = operate.Delete(driver, account, path_, clearCache) + if err != nil { + _ = base.DeleteCache(utils.Dir(path_), account) + common.ErrorResp(c, err, 500) + return + } + } + common.SuccessResp(c) +} diff --git a/server/controllers/file.go b/server/controllers/file/upload.go similarity index 96% rename from server/controllers/file.go rename to server/controllers/file/upload.go index dbb08fce..84a54bb4 100644 --- a/server/controllers/file.go +++ b/server/controllers/file/upload.go @@ -1,4 +1,4 @@ -package controllers +package file import ( "errors" @@ -11,7 +11,7 @@ import ( "github.com/gin-gonic/gin" ) -func UploadFile(c *gin.Context) { +func UploadFiles(c *gin.Context) { path := c.PostForm("path") path = utils.ParsePath(path) token := c.GetHeader("Authorization") diff --git a/server/router.go b/server/router.go index a5c392e8..742ff196 100644 --- a/server/router.go +++ b/server/router.go @@ -3,6 +3,7 @@ package server import ( "github.com/Xhofe/alist/server/common" "github.com/Xhofe/alist/server/controllers" + "github.com/Xhofe/alist/server/controllers/file" "github.com/Xhofe/alist/server/middlewares" "github.com/gin-contrib/cors" "github.com/gin-gonic/gin" @@ -23,7 +24,7 @@ func InitApiRouter(r *gin.Engine) { path.POST("/preview", controllers.Preview) //path.POST("/link",middlewares.Auth, controllers.Link) - public.POST("/upload", controllers.UploadFile) + public.POST("/upload", file.UploadFiles) public.GET("/settings", controllers.GetSettingsPublic) } @@ -49,6 +50,7 @@ func InitApiRouter(r *gin.Engine) { admin.DELETE("/meta", controllers.DeleteMeta) admin.POST("/link", controllers.Link) + admin.DELETE("/files", file.DeleteFiles) } WebDav(r) Static(r)