From d04eacbf9a4ee737dd82c20bf1012be671fe0011 Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Wed, 15 Mar 2023 22:19:25 +0800 Subject: [PATCH] =?UTF-8?q?:art:=20=E6=8F=90=E4=BE=9B=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E6=96=87=E4=BB=B6=20API=20Fix=20https://github.com/siyuan-note?= =?UTF-8?q?/siyuan/issues/7678?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- API.md | 29 ++++++++++++++++++++++++++--- API_zh_CN.md | 22 ++++++++++++++++++++++ kernel/api/file.go | 27 +++++++++++++++++++++++++++ kernel/api/router.go | 1 + 4 files changed, 76 insertions(+), 3 deletions(-) diff --git a/API.md b/API.md index 0c8ba3877..48a386fa2 100644 --- a/API.md +++ b/API.md @@ -38,6 +38,7 @@ * [File](#File) * [Get file](#Get-file) * [Put file](#Put-file) + * [Remove file](#Remove-file) * [Export](#Export) * [Export Markdown](#Export-Markdown) * [Notification](#Notification) @@ -439,7 +440,7 @@ View API token in Settings - About, request header: `Authorization: T } ``` - * `id`:Block ID + * `id`: Block ID * Return value ```json @@ -854,7 +855,7 @@ View API token in Settings - About, request header: `Authorization: T * `isDir`: whether to create a folder, when `true` only create a folder, ignore `file` * `modTime`: last access and modification time, Unix time * `file`: the uploaded file -* return value +* Return value ```json { @@ -864,6 +865,28 @@ View API token in Settings - About, request header: `Authorization: T } ``` +### Remove file + +* `/api/file/removeFile` +* Parameters + + ```json + { + "path": "/data/20210808180117-6v0mkxr/20200923234011-ieuun1p.sy" + } + ``` + * `path`: the file path under the workspace path +* Return value + + ```json + { + "code": 0, + "msg": "", + "data": null + } + ``` + + ## Export ### Export Markdown @@ -946,7 +969,7 @@ View API token in Settings - About, request header: `Authorization: T } } ``` - * `id`:Message ID + * `id`: Message ID ## System diff --git a/API_zh_CN.md b/API_zh_CN.md index c77c5818b..13be50e40 100644 --- a/API_zh_CN.md +++ b/API_zh_CN.md @@ -38,6 +38,7 @@ * [文件](#文件) * [获取文件](#获取文件) * [写入文件](#写入文件) + * [删除文件](#删除文件) * [导出](#导出) * [导出 Markdown 文本](#导出-markdown-文本) * [通知](#通知) @@ -858,6 +859,27 @@ } ``` +### 删除文件 + +* `/api/file/removeFile` +* 参数 + + ```json + { + "path": "/data/20210808180117-6v0mkxr/20200923234011-ieuun1p.sy" + } + ``` + * `path`:工作空间路径下的文件路径 +* 返回值 + + ```json + { + "code": 0, + "msg": "", + "data": null + } + ``` + ## 导出 ### 导出 Markdown 文本 diff --git a/kernel/api/file.go b/kernel/api/file.go index db92708da..c63b0ad2c 100644 --- a/kernel/api/file.go +++ b/kernel/api/file.go @@ -110,6 +110,33 @@ func getFile(c *gin.Context) { } } +func removeFile(c *gin.Context) { + ret := gulu.Ret.NewResult() + arg, ok := util.JsonArg(c, ret) + if !ok { + c.JSON(http.StatusOK, ret) + return + } + + filePath := arg["path"].(string) + filePath = filepath.Join(util.WorkspaceDir, filePath) + _, err := os.Stat(filePath) + if os.IsNotExist(err) { + c.Status(404) + return + } + if nil != err { + logging.LogErrorf("stat [%s] failed: %s", filePath, err) + c.Status(500) + return + } + + if err = os.RemoveAll(filePath); nil != err { + c.Status(500) + return + } +} + func putFile(c *gin.Context) { ret := gulu.Ret.NewResult() defer c.JSON(http.StatusOK, ret) diff --git a/kernel/api/router.go b/kernel/api/router.go index 6e56ac488..8431c5a5a 100644 --- a/kernel/api/router.go +++ b/kernel/api/router.go @@ -175,6 +175,7 @@ func ServeAPI(ginServer *gin.Engine) { ginServer.Handle("POST", "/api/file/getFile", model.CheckAuth, getFile) ginServer.Handle("POST", "/api/file/putFile", model.CheckAuth, model.CheckReadonly, putFile) ginServer.Handle("POST", "/api/file/copyFile", model.CheckAuth, model.CheckReadonly, copyFile) + ginServer.Handle("POST", "/api/file/removeFile", model.CheckAuth, model.CheckReadonly, removeFile) ginServer.Handle("POST", "/api/ref/refreshBacklink", model.CheckAuth, refreshBacklink) ginServer.Handle("POST", "/api/ref/getBacklink", model.CheckAuth, getBacklink)