From 96ece990bd36f29dcdfeb3086b53a078a8c17160 Mon Sep 17 00:00:00 2001 From: Oleh Paduchak Date: Sat, 26 Jul 2025 16:27:00 +0300 Subject: [PATCH 1/3] fixed files with cyrillic names not rendering --- mfr/server/handlers/export.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mfr/server/handlers/export.py b/mfr/server/handlers/export.py index 24add4e5..a5ba626e 100644 --- a/mfr/server/handlers/export.py +++ b/mfr/server/handlers/export.py @@ -1,6 +1,7 @@ import asyncio import logging import os +from urllib.parse import quote from waterbutler.core.exceptions import InvalidParameters, DownloadError import waterbutler.core.streams @@ -118,6 +119,6 @@ async def _cache_and_clean(self): pass def _set_headers(self): - self.set_header('Content-Disposition', 'attachment;filename="{}"'.format('{}.{}'.format(self.metadata.name.replace('"', '\\"'), self.format))) + self.set_header('Content-Disposition', f'attachment;filename="{quote(self.metadata.name.replace('"', '\\"'))}.{self.format}"') if self.metadata.content_type: self.set_header('Content-Type', self.metadata.content_type) From d3cd6e4c754d61aac9cf693db80fc194f1e94d3a Mon Sep 17 00:00:00 2001 From: Oleh Paduchak Date: Mon, 28 Jul 2025 12:03:25 +0300 Subject: [PATCH 2/3] made content-dispositon header use modern filename* syntax --- mfr/server/handlers/export.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mfr/server/handlers/export.py b/mfr/server/handlers/export.py index a5ba626e..a951243e 100644 --- a/mfr/server/handlers/export.py +++ b/mfr/server/handlers/export.py @@ -119,6 +119,6 @@ async def _cache_and_clean(self): pass def _set_headers(self): - self.set_header('Content-Disposition', f'attachment;filename="{quote(self.metadata.name.replace('"', '\\"'))}.{self.format}"') + self.set_header('Content-Disposition', f'attachment;filename*=\'UTF-8\'{quote(self.metadata.name.replace('"', '\\"'))}.{self.format}') if self.metadata.content_type: self.set_header('Content-Type', self.metadata.content_type) From 46f5c3b55030c03698f2d26ff7c64b8ded2b0a96 Mon Sep 17 00:00:00 2001 From: Oleh Paduchak Date: Mon, 28 Jul 2025 17:36:51 +0300 Subject: [PATCH 3/3] fixed filename=* syntax --- mfr/server/handlers/export.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mfr/server/handlers/export.py b/mfr/server/handlers/export.py index a951243e..527ed929 100644 --- a/mfr/server/handlers/export.py +++ b/mfr/server/handlers/export.py @@ -119,6 +119,6 @@ async def _cache_and_clean(self): pass def _set_headers(self): - self.set_header('Content-Disposition', f'attachment;filename*=\'UTF-8\'{quote(self.metadata.name.replace('"', '\\"'))}.{self.format}') + self.set_header('Content-Disposition', f'attachment;filename*=UTF-8\'\'{quote(self.metadata.name.replace('"', '\\"'))}.{self.format}') if self.metadata.content_type: self.set_header('Content-Type', self.metadata.content_type)