From 3468fb09769b43c380d1156c5b60ce48db4e0e72 Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Sat, 17 Sep 2022 22:33:52 +0800 Subject: [PATCH] =?UTF-8?q?:art:=20=E7=BB=86=E5=8C=96=E4=BA=91=E7=AB=AF?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E9=94=81=E6=8F=90=E5=8D=87=E7=A8=B3=E5=AE=9A?= =?UTF-8?q?=E6=80=A7=20https://github.com/siyuan-note/siyuan/issues/5887?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kernel/api/asset.go | 2 +- kernel/api/extension.go | 2 +- kernel/model/assets.go | 2 +- kernel/model/upload.go | 10 ++-------- kernel/util/file.go | 12 ++++++++++++ 5 files changed, 17 insertions(+), 11 deletions(-) diff --git a/kernel/api/asset.go b/kernel/api/asset.go index 4d3a80d04..b3ae4bd9f 100644 --- a/kernel/api/asset.go +++ b/kernel/api/asset.go @@ -85,7 +85,7 @@ func setFileAnnotation(c *gin.Context) { ret.Msg = err.Error() return } - if err := gulu.File.WriteFileSafer(writePath, []byte(data), 0644); nil != err { + if err := util.WriteFileSafer(writePath, []byte(data)); nil != err { ret.Code = -1 ret.Msg = err.Error() return diff --git a/kernel/api/extension.go b/kernel/api/extension.go index 4b14b09a6..90fca65fd 100644 --- a/kernel/api/extension.go +++ b/kernel/api/extension.go @@ -106,7 +106,7 @@ func extensionCopy(c *gin.Context) { } fName = fName + "-" + ast.NewNodeID() + ext writePath := filepath.Join(assets, fName) - if err = gulu.File.WriteFileSafer(writePath, data, 0644); nil != err { + if err = util.WriteFileSafer(writePath, data); nil != err { ret.Code = -1 ret.Msg = err.Error() break diff --git a/kernel/model/assets.go b/kernel/model/assets.go index 4af247387..462d39c29 100644 --- a/kernel/model/assets.go +++ b/kernel/model/assets.go @@ -383,7 +383,7 @@ func saveWorkspaceAssets(assets []string) { logging.LogErrorf("create assets conf failed: %s", err) return } - if err = gulu.File.WriteFileSafer(confPath, data, 0644); nil != err { + if err = util.WriteFileSafer(confPath, data); nil != err { logging.LogErrorf("write assets conf failed: %s", err) return } diff --git a/kernel/model/upload.go b/kernel/model/upload.go index e6ca11af8..d82ba02e5 100644 --- a/kernel/model/upload.go +++ b/kernel/model/upload.go @@ -34,9 +34,6 @@ import ( ) func InsertLocalAssets(id string, assetPaths []string) (succMap map[string]interface{}, err error) { - util.WritingFileLock.Lock() - defer util.WritingFileLock.Unlock() - succMap = map[string]interface{}{} bt := treenode.GetBlockTree(id) @@ -88,7 +85,7 @@ func InsertLocalAssets(id string, assetPaths []string) (succMap map[string]inter f.Close() return } - if err = gulu.File.WriteFileSaferByReader(writePath, f, 0644); nil != err { + if err = util.WriteFileSaferByReader(writePath, f); nil != err { f.Close() return } @@ -104,9 +101,6 @@ func Upload(c *gin.Context) { ret := gulu.Ret.NewResult() defer c.JSON(200, ret) - util.WritingFileLock.Lock() - defer util.WritingFileLock.Unlock() - form, err := c.MultipartForm() if nil != err { logging.LogErrorf("insert asset failed: %s", err) @@ -174,7 +168,7 @@ func Upload(c *gin.Context) { f.Close() break } - if err = gulu.File.WriteFileSaferByReader(writePath, f, 0644); nil != err { + if err = util.WriteFileSaferByReader(writePath, f); nil != err { errFiles = append(errFiles, fName) ret.Msg = err.Error() f.Close() diff --git a/kernel/util/file.go b/kernel/util/file.go index 863ef514b..ba53eec76 100644 --- a/kernel/util/file.go +++ b/kernel/util/file.go @@ -17,6 +17,7 @@ package util import ( + "io" "os" "path" "path/filepath" @@ -32,6 +33,17 @@ import ( var WritingFileLock = sync.Mutex{} +func WriteFileSaferByReader(writePath string, reader io.Reader) (err error) { + WritingFileLock.Lock() + defer WritingFileLock.Unlock() + + if err = gulu.File.WriteFileSaferByReader(writePath, reader, 0644); nil != err { + logging.LogErrorf("write file [%s] failed: %s", writePath, err) + return + } + return +} + func WriteFileSafer(writePath string, data []byte) (err error) { WritingFileLock.Lock() defer WritingFileLock.Unlock()