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)