diff --git a/handlers.py b/handlers.py index 9fc53a1..39426a0 100644 --- a/handlers.py +++ b/handlers.py @@ -3,7 +3,7 @@ import os import sqlite3 from datetime import datetime from http.server import BaseHTTPRequestHandler -from urllib.parse import parse_qs, urlparse +from urllib.parse import parse_qs, unquote, urlparse import database from config import get_storage_root, load_config @@ -289,14 +289,19 @@ class FileServerHandler(BaseHTTPRequestHandler): self.send_redirect("/files") def handle_file_download(self, username, filename): + # Decode URL-encoded filename + # For example when we have not default symbols: %D1%80%D0%B8%D0%BD%D0%B3%D1%82%D0%BE%D0%BD.mp3 + decoded_filename = unquote(filename) + user_dir = os.path.join(get_storage_root(), username) - filepath = os.path.join(user_dir, filename) + filepath = os.path.join(user_dir, decoded_filename) + print(filepath) if not os.path.exists(filepath) or not os.path.isfile(filepath): self.send_html("