From adf24fdcaaf1a5ede0f0a28c3e4ffca92fde6f81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EA=B4=91=EC=98=A4?= Date: Sun, 30 Jul 2023 17:52:51 +0900 Subject: [PATCH] fix: add directory creation code --- files/file.go | 1 + http/tus_handlers.go | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/files/file.go b/files/file.go index a077b062..051259a0 100644 --- a/files/file.go +++ b/files/file.go @@ -24,6 +24,7 @@ import ( ) const PERM = 0664 +const DirPERM = 0755 // FileInfo describes a file. type FileInfo struct { diff --git a/http/tus_handlers.go b/http/tus_handlers.go index 8df38d4b..d8e88d02 100644 --- a/http/tus_handlers.go +++ b/http/tus_handlers.go @@ -6,6 +6,7 @@ import ( "io" "net/http" "os" + "path/filepath" "strconv" "github.com/spf13/afero" @@ -28,6 +29,13 @@ func tusPostHandler() handleFunc { if !d.user.Perm.Create || !d.Check(r.URL.Path) { return http.StatusForbidden, nil } + + dirPath := filepath.Dir(r.URL.Path) + if _, err := d.user.Fs.Stat(dirPath); os.IsNotExist(err) { + if err := d.user.Fs.MkdirAll(dirPath, 0755); err != nil { + return http.StatusInternalServerError, err + } + } case err != nil: return errToStatus(err), err }