diff --git a/context.go b/context.go index 3c5bc7f2..0ccadca5 100644 --- a/context.go +++ b/context.go @@ -689,7 +689,12 @@ func (c *Context) SaveUploadedFile(file *multipart.FileHeader, dst string, perm perm = append(perm, 0o750) } - if err = os.MkdirAll(filepath.Dir(dst), perm[0]); err != nil { + dirPath := filepath.Dir(dst) + if err = os.MkdirAll(dirPath, perm[0]); err != nil { + return err + } + + if err = os.Chmod(dirPath, perm[0]); err != nil { return err } diff --git a/context_test.go b/context_test.go index 3d3b5757..c62ba232 100644 --- a/context_test.go +++ b/context_test.go @@ -171,7 +171,7 @@ func TestSaveUploadedFileWithPermission(t *testing.T) { require.NoError(t, err) assert.Equal(t, "permission_test", f.Filename) - var mode fs.FileMode = 0o777 + var mode fs.FileMode = 0o755 require.NoError(t, c.SaveUploadedFile(f, "permission_test", mode)) info, err := os.Stat(filepath.Dir("permission_test")) @@ -195,7 +195,7 @@ func TestSaveUploadedFileWithPermissionFailed(t *testing.T) { require.NoError(t, err) assert.Equal(t, "permission_test", f.Filename) - var mode fs.FileMode = 0o666 + var mode fs.FileMode = 0o644 require.Error(t, c.SaveUploadedFile(f, "test/permission_test", mode)) }