From a411a3d7ca44abc463c7cd29948f862cc7e920d4 Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Mon, 14 Nov 2022 18:29:23 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20=E5=AF=BC=E5=87=BA=E4=B8=BA?= =?UTF-8?q?=E9=95=BF=E5=9B=BE=20https://github.com/siyuan-note/siyuan/issu?= =?UTF-8?q?es/2919?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kernel/api/export.go | 36 ++++++++++++++++++++++++++++++++++++ kernel/api/router.go | 1 + 2 files changed, 37 insertions(+) diff --git a/kernel/api/export.go b/kernel/api/export.go index c5195d58e..e4e25680c 100644 --- a/kernel/api/export.go +++ b/kernel/api/export.go @@ -17,6 +17,7 @@ package api import ( + "io" "net/http" "os" "path" @@ -25,6 +26,7 @@ import ( "github.com/88250/gulu" "github.com/gin-gonic/gin" + "github.com/siyuan-note/logging" "github.com/siyuan-note/siyuan/kernel/model" "github.com/siyuan-note/siyuan/kernel/util" ) @@ -296,3 +298,37 @@ func exportPreview(c *gin.Context) { "html": stdHTML, } } + +func exportAsFile(c *gin.Context) { + ret := gulu.Ret.NewResult() + defer c.JSON(http.StatusOK, ret) + + form, err := c.MultipartForm() + if nil != err { + logging.LogErrorf("export as file failed: %s", err) + ret.Code = -1 + ret.Msg = err.Error() + return + } + + typ := form.Value["type"][0] + file := form.File["file"][0] + reader, err := file.Open() + if nil != err { + logging.LogErrorf("export as file failed: %s", err) + ret.Code = -1 + ret.Msg = err.Error() + return + } + defer reader.Close() + + data, err := io.ReadAll(reader) + if nil != err { + logging.LogErrorf("export as file failed: %s", err) + ret.Code = -1 + ret.Msg = err.Error() + return + } + + c.Data(http.StatusOK, typ, data) +} diff --git a/kernel/api/router.go b/kernel/api/router.go index 7b3effde4..89dc57a22 100644 --- a/kernel/api/router.go +++ b/kernel/api/router.go @@ -226,6 +226,7 @@ func ServeAPI(ginServer *gin.Engine) { ginServer.Handle("POST", "/api/export/exportDocx", model.CheckAuth, exportDocx) ginServer.Handle("POST", "/api/export/addPDFOutline", model.CheckAuth, addPDFOutline) ginServer.Handle("POST", "/api/export/preview", model.CheckAuth, exportPreview) + ginServer.Handle("POST", "/api/export/exportAsFile", model.CheckAuth, exportAsFile) ginServer.Handle("POST", "/api/export/exportData", model.CheckAuth, exportData) ginServer.Handle("POST", "/api/export/exportDataInFolder", model.CheckAuth, exportDataInFolder) ginServer.Handle("POST", "/api/export/exportTempContent", model.CheckAuth, exportTempContent)