From 065d88fe170ba7cf460bbf38d2615e51f880abcd Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Tue, 27 Sep 2022 00:11:46 +0800 Subject: [PATCH] =?UTF-8?q?:bug:=20=E8=AE=BE=E7=BD=AE=E8=AE=BF=E9=97=AE?= =?UTF-8?q?=E6=8E=88=E6=9D=83=E7=A0=81=E5=90=8E=E6=97=A0=E6=B3=95=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=20PDF=20https://github.com/siyuan-note/siyuan/issues/?= =?UTF-8?q?5959?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kernel/api/export.go | 32 ++++++++++++++++++++++++++++++++ kernel/api/router.go | 1 + 2 files changed, 33 insertions(+) diff --git a/kernel/api/export.go b/kernel/api/export.go index 2f17f5404..e369c26eb 100644 --- a/kernel/api/export.go +++ b/kernel/api/export.go @@ -18,7 +18,9 @@ package api import ( "net/http" + "os" "path" + "path/filepath" "strings" "github.com/88250/gulu" @@ -181,6 +183,36 @@ func exportMdHTML(c *gin.Context) { } } +func exportTempContent(c *gin.Context) { + ret := gulu.Ret.NewResult() + defer c.JSON(http.StatusOK, ret) + + arg, ok := util.JsonArg(c, ret) + if !ok { + return + } + + content := arg["content"].(string) + tmpExport := filepath.Join(util.TempDir, "export") + if err := os.MkdirAll(tmpExport, 0755); nil != err { + ret.Code = 1 + ret.Msg = err.Error() + ret.Data = map[string]interface{}{"closeTimeout": 7000} + return + } + p := filepath.Join(tmpExport, "temp", gulu.Rand.String(7)) + if err := os.WriteFile(p, []byte(content), 0644); nil != err { + ret.Code = 1 + ret.Msg = err.Error() + ret.Data = map[string]interface{}{"closeTimeout": 7000} + return + } + url := path.Join("/export/temp/", filepath.Base(p)) + ret.Data = map[string]interface{}{ + "url": url, + } +} + func exportPreviewHTML(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 7ef2942c0..08f3ce0f1 100644 --- a/kernel/api/router.go +++ b/kernel/api/router.go @@ -206,6 +206,7 @@ func ServeAPI(ginServer *gin.Engine) { ginServer.Handle("POST", "/api/export/preview", model.CheckAuth, exportPreview) 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) ginServer.Handle("POST", "/api/import/importStdMd", model.CheckAuth, model.CheckReadonly, importStdMd) ginServer.Handle("POST", "/api/import/importData", model.CheckAuth, model.CheckReadonly, importData)