diff options
| -rw-r--r-- | main.go | 19 | ||||
| -rw-r--r-- | templates/index.html | 13 |
2 files changed, 21 insertions, 11 deletions
@@ -116,15 +116,18 @@ func (handler BoxHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusUnauthorized) return } - ext := r.Header.Get("X-ResourceMeta-Extension") - u, err := uuid.NewRandom() - if err != nil { - log.Println(err) - fmt.Fprint(w, err.Error()) - w.WriteHeader(http.StatusInternalServerError) - return + filename := r.Header.Get("X-ResourceMeta-Filename") + if filename == "" { + ext := r.Header.Get("X-ResourceMeta-Extension") + u, err := uuid.NewRandom() + if err != nil { + log.Println(err) + fmt.Fprint(w, err.Error()) + w.WriteHeader(http.StatusInternalServerError) + return + } + filename = filepath.Join(handler.filesPath, u.String()) + ext } - filename := filepath.Join(handler.filesPath, u.String()) + ext log.Printf("Boxing %s...\n", filename) f, err := os.Create(filename) if err != nil { diff --git a/templates/index.html b/templates/index.html index 12c99f4..c06b6ec 100644 --- a/templates/index.html +++ b/templates/index.html @@ -40,9 +40,13 @@ xhr.setRequestHeader("X-Token", token); ldot = f.name.lastIndexOf("."); if (ldot > -1) { - xhr.setRequestHeader("X-ResourceMeta-Extension", f.name.substring(ldot)) + xhr.setRequestHeader("X-ResourceMeta-Extension", f.name.substring(ldot)); } - xhr.send(f) + let preserveFilename = document.getElementById("filename").checked; + if (preserveFilename) { + xhr.setRequestHeader("X-ResourceMeta-Filename", f.name); + } + xhr.send(f); } </script> </head> @@ -59,6 +63,8 @@ Server for uploading files. Use the form here or send a POST request to /upload with the content of the file in the body. The request can contain a X-ResourceMeta-Extension header with the desired extension of the file including the dot (i.e. .gif or .flac). This will improve compatibility when fetching the file. +The request can contain a X-ResourceMeta-Filename header with the desired filename. This supercedes X-ResourceMeta-Extension. +Note that using this option may make it easier to guess the resource url. If a token has been set on the server, pass the token in the request via a X-Token header. The response will contain a X-Resource-ID header containing the ID of the saved file. @@ -69,7 +75,8 @@ Again if a token has been set on the server, use a X-Token header when sending t {{ if .Token }} <input type="text" id="token" placeholder="token"/> {{end}} - <input type="file" id="file"/><br/><br/> + <input type="file" id="file"/> + <pre><label for="filename">Preserve filename: </label><input type="checkbox" id="filename"/></pre> <button type="button" onclick="upload()">Upload</button> <span id="progress"></span> </body> |
