diff --git a/copyparty/httpcli.py b/copyparty/httpcli.py index 0fe53e2c..ceaf6933 100644 --- a/copyparty/httpcli.py +++ b/copyparty/httpcli.py @@ -132,7 +132,6 @@ class HttpCli(object): self.reply(b"
" + body.encode("utf-8"), *list(args), **kwargs)
 
     def handle_get(self):
-        self.log("")
         self.log("GET  " + self.req)
 
         # "embedded" resources
@@ -172,7 +171,6 @@ class HttpCli(object):
             return self.tx_upper()
 
     def handle_post(self):
-        self.log("")
         self.log("POST " + self.req)
 
         try:
@@ -222,8 +220,11 @@ class HttpCli(object):
         files = []
         t0 = time.time()
         for nfile, (p_field, p_file, p_data) in enumerate(self.parser.gen):
+            if not p_file:
+                self.log("discarding incoming file without filename")
+
             fn = os.devnull
-            if not nullwrite:
+            if p_file and not nullwrite:
                 fn = os.path.join(vfs.realpath, rem, sanitize_fn(p_file))
 
                 # TODO broker which avoid this race
@@ -239,6 +240,8 @@ class HttpCli(object):
 
                 files.append([sz, sha512])
 
+        self.parser.drop()
+
         td = time.time() - t0
         sz_total = sum(x[0] for x in files)
         spd = (sz_total / td) / (1024 * 1024)
@@ -256,7 +259,7 @@ class HttpCli(object):
 
         html = self.conn.tpl_msg.render(
             h2='return to /{}'.format(
-                quote_plus(self.vpath, safe="/"), cgi.escape(self.vpath, quote=True)
+                quotep(self.vpath), cgi.escape(self.vpath, quote=True)
             ),
             pre=msg,
         )
@@ -317,7 +320,11 @@ class HttpCli(object):
         vpath = ""
         vpnodes = [["/", "/"]]
         for node in self.vpath.split("/"):
-            vpath += "/" + node
+            if not vpath:
+                vpath = node
+            else:
+                vpath += "/" + node
+
             vpnodes.append([quotep(vpath) + "/", cgi.escape(node)])
 
         vn, rem = self.auth.vfs.get(self.vpath, self.uname, True, False)
@@ -362,6 +369,6 @@ class HttpCli(object):
 
         dirs.extend(files)
         html = self.conn.tpl_browser.render(
-            vpnodes=vpnodes, files=dirs, can_upload=self.writable
+            vdir=self.vpath, vpnodes=vpnodes, files=dirs, can_upload=self.writable
         )
         self.reply(html.encode("utf-8", "replace"))
diff --git a/copyparty/web/browser.html b/copyparty/web/browser.html
index 8107d019..5ddfe273 100644
--- a/copyparty/web/browser.html
+++ b/copyparty/web/browser.html
@@ -12,7 +12,7 @@
 
     {%- if can_upload %}
     
-
+
diff --git a/copyparty/web/browser.js b/copyparty/web/browser.js index f9ce0cd0..7a92d62d 100644 --- a/copyparty/web/browser.js +++ b/copyparty/web/browser.js @@ -571,7 +571,10 @@ function autoplay_blocked(tid) { var go = ebi('blk_go'); var na = ebi('blk_na'); - go.textContent = 'Play "' + mp.tracks[mp.au.tid].split(/\//).pop() + '"'; + var fn = mp.tracks[mp.au.tid].split(/\//).pop(); + fn = decodeURIComponent(fn.replace(/\+/g, ' ')); + + go.textContent = 'Play "' + fn + '"'; go.onclick = function () { unblocked(); mp.au.play();