From 7e214231d96ec61b42ad709998326d92acb34e5e Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Sat, 31 Dec 2022 16:30:24 +0800 Subject: [PATCH] =?UTF-8?q?:art:=20=E6=94=B9=E8=BF=9B=E5=AF=BC=E5=87=BA=20?= =?UTF-8?q?Data=20=E5=8E=8B=E7=BC=A9=E5=8C=85=E8=BF=87=E7=A8=8B=20Fix=20ht?= =?UTF-8?q?tps://github.com/siyuan-note/siyuan/issues/6961?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kernel/api/export.go | 8 +++++++- kernel/model/export.go | 23 +++++++++++++++-------- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/kernel/api/export.go b/kernel/api/export.go index f79044500..73c0d1e64 100644 --- a/kernel/api/export.go +++ b/kernel/api/export.go @@ -57,7 +57,13 @@ func exportData(c *gin.Context) { ret := gulu.Ret.NewResult() defer c.JSON(http.StatusOK, ret) - zipPath := model.ExportData() + zipPath, err := model.ExportData() + if nil != err { + ret.Code = 1 + ret.Msg = err.Error() + ret.Data = map[string]interface{}{"closeTimeout": 7000} + return + } ret.Data = map[string]interface{}{ "zip": zipPath, } diff --git a/kernel/model/export.go b/kernel/model/export.go index 72cbe3c08..abed74631 100644 --- a/kernel/model/export.go +++ b/kernel/model/export.go @@ -125,25 +125,30 @@ func ExportDataInFolder(exportFolder string) (name string, err error) { util.PushEndlessProgress(Conf.Language(65)) defer util.ClearPushProgress(100) - WaitForWritingFiles() - - exportFolder = filepath.Join(exportFolder, util.CurrentTimeSecondsStr()) - zipPath, err := exportData(exportFolder) + zipPath, err := ExportData() if nil != err { return } name = filepath.Base(zipPath) + targetZipPath := filepath.Join(exportFolder, name) + zipAbsPath := filepath.Join(util.TempDir, "export", name) + err = filelock.RoboCopy(zipAbsPath, targetZipPath) + if nil != err { + logging.LogErrorf("copy export zip from [%s] to [%s] failed: %s", zipAbsPath, targetZipPath, err) + return + } + if removeErr := os.Remove(zipAbsPath); nil != removeErr { + logging.LogErrorf("remove export zip failed: %s", removeErr) + } return } -func ExportData() (zipPath string) { +func ExportData() (zipPath string, err error) { util.PushEndlessProgress(Conf.Language(65)) defer util.ClearPushProgress(100) - WaitForWritingFiles() - exportFolder := filepath.Join(util.TempDir, "export", util.CurrentTimeSecondsStr()) - zipPath, err := exportData(exportFolder) + zipPath, err = exportData(exportFolder) if nil != err { return } @@ -152,6 +157,8 @@ func ExportData() (zipPath string) { } func exportData(exportFolder string) (zipPath string, err error) { + WaitForWritingFiles() + baseFolderName := "data-" + util.CurrentTimeSecondsStr() if err = os.MkdirAll(exportFolder, 0755); nil != err { logging.LogErrorf("create export temp folder failed: %s", err)