From 4832081b82a01391474d11c7abb5d8875eb4f035 Mon Sep 17 00:00:00 2001 From: zhengkunwang <31820853+zhengkunwang223@users.noreply.github.com> Date: Thu, 18 Apr 2024 11:18:07 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=A7=A3=E5=86=B3=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=9D=83=E9=99=90=E9=94=99=E8=AF=AF=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98=20(#4563)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/app/api/v1/file.go | 2 +- backend/utils/files/file_op.go | 9 ++++++++- backend/utils/files/utils.go | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/backend/app/api/v1/file.go b/backend/app/api/v1/file.go index 4702bba86..88fb43e1b 100644 --- a/backend/app/api/v1/file.go +++ b/backend/app/api/v1/file.go @@ -596,7 +596,7 @@ func mergeChunks(fileName string, fileDir string, dstDir string, chunkCount int) dstDir = strings.TrimSpace(dstDir) mode, _ := files.GetParentMode(dstDir) if mode == 0 { - mode = os.ModePerm + mode = 0755 } if _, err := os.Stat(dstDir); err != nil && os.IsNotExist(err) { if err = op.CreateDir(dstDir, mode); err != nil { diff --git a/backend/utils/files/file_op.go b/backend/utils/files/file_op.go index 1bbd11601..a2ff326ad 100644 --- a/backend/utils/files/file_op.go +++ b/backend/utils/files/file_op.go @@ -57,7 +57,14 @@ func (f FileOp) CreateDir(dst string, mode fs.FileMode) error { if err := f.Fs.MkdirAll(dst, mode); err != nil { return err } - return f.ChmodR(dst, int64(mode), true) + modStr := fmt.Sprintf("%o", mode) + + modeInt, err := strconv.ParseInt(modStr, 10, 64) + if err != nil { + modeInt = 0755 + } + + return f.ChmodR(dst, modeInt, true) } func (f FileOp) CreateFile(dst string) error { diff --git a/backend/utils/files/utils.go b/backend/utils/files/utils.go index b72d6198d..f44441db9 100644 --- a/backend/utils/files/utils.go +++ b/backend/utils/files/utils.go @@ -129,7 +129,7 @@ func GetParentMode(path string) (os.FileMode, error) { for { fileInfo, err := os.Stat(absPath) if err == nil { - return fileInfo.Mode(), nil + return fileInfo.Mode() & os.ModePerm, nil } if !os.IsNotExist(err) { return 0, err