From c1830039539fc414cb452b02b61583f03ce29c6f Mon Sep 17 00:00:00 2001 From: Gabriel Simmer Date: Fri, 3 Apr 2020 02:24:18 +0100 Subject: [PATCH] Resolve upload logic for frontend. Frontend logic for routing was a bit broken when generating links for directories, appending an extra / to the start. Resolved this to properly link - interestingly, the file listing could still be served, but the uploading was broken? Also enforced regex for provider of directory listings and tidied up some other string handling. --- assets/web/javascript/app.js | 6 +++--- files/backblaze.go | 5 +---- files/disk.go | 3 ++- router/router.go | 2 +- 4 files changed, 7 insertions(+), 9 deletions(-) diff --git a/assets/web/javascript/app.js b/assets/web/javascript/app.js index 97f9cd9..25fa2ce 100644 --- a/assets/web/javascript/app.js +++ b/assets/web/javascript/app.js @@ -13,12 +13,12 @@ function getFileListing(provider, path = "") { let files = data["Files"] html`
- +
${files.map(file => - ` + ` ${file.Name}${file.IsDirectory ? '/' : ''} ` @@ -64,7 +64,7 @@ function router(event = null) { let path = hash.split("/") let provider = path.shift() path = path.join("/") - getFileListing(provider, "/" + path) + getFileListing(provider, path) } // File upload functions. Uses XMLHttpRequest so we can display file upload progress. diff --git a/files/backblaze.go b/files/backblaze.go index c92b8c0..2a3e544 100644 --- a/files/backblaze.go +++ b/files/backblaze.go @@ -256,9 +256,6 @@ func (bp *BackblazeProvider) SaveFile(file multipart.File, handler *multipart.Fi } func (bp *BackblazeProvider) DetermineType(path string) string { + // TODO: Implement directory support for B2. return "file" } - -func (bp *BackblazeProvider) GetProviderConfig() FileProvider { - return ProviderConfig[bp.Name] -} \ No newline at end of file diff --git a/files/disk.go b/files/disk.go index a34e852..7d6882c 100644 --- a/files/disk.go +++ b/files/disk.go @@ -56,7 +56,8 @@ func (dp *DiskProvider) ViewFile(path string, w io.Writer) { } func (dp *DiskProvider) SaveFile(file multipart.File, handler *multipart.FileHeader, path string) bool { - f, err := os.OpenFile(dp.Location + path + "/" + handler.Filename, os.O_WRONLY|os.O_CREATE, 0666) + filename := strings.Join([]string{dp.Location,path,handler.Filename}, "/") + f, err := os.OpenFile(filename, os.O_WRONLY|os.O_CREATE, 0666) if err != nil { fmt.Println(err.Error()) return false diff --git a/router/router.go b/router/router.go index 765f38f..b1a312a 100644 --- a/router/router.go +++ b/router/router.go @@ -57,7 +57,7 @@ func Init() *mux.Router { HandleProvider(), )).Methods("GET", "POST") - r.Handle(`/api/files/{provider}/{file:[a-zA-Z0-9=\-\/\s.,&_+]+}`, Handle( + r.Handle(`/api/files/{provider:[a-zA-Z0-9]+}/{file:[a-zA-Z0-9=\-\/\s.,&_+]+}`, Handle( HandleProvider(), )).Methods("GET", "POST")