app: content disposition fix for file names containing commas
Signed-off-by: Eric Callahan <arksine.code@gmail.com>
This commit is contained in:
parent
7fcd84bbe4
commit
04477705b0
|
@ -654,8 +654,9 @@ class FileRequestHandler(AuthorizedFileHandler):
|
||||||
ascii_basename = self._escape_filename_to_ascii(basename)
|
ascii_basename = self._escape_filename_to_ascii(basename)
|
||||||
utf8_basename = self._escape_filename_to_utf8(basename)
|
utf8_basename = self._escape_filename_to_utf8(basename)
|
||||||
self.set_header(
|
self.set_header(
|
||||||
"Content-Disposition", f"attachment; filename={ascii_basename}; "
|
"Content-Disposition",
|
||||||
f"filename*=UTF-8\'\'{utf8_basename}")
|
f"attachment; filename=\"{ascii_basename}\"; "
|
||||||
|
f"filename*=UTF-8\'\'{utf8_basename}")
|
||||||
|
|
||||||
async def delete(self, path: str) -> None:
|
async def delete(self, path: str) -> None:
|
||||||
path = self.request.path.lstrip("/").split("/", 2)[-1]
|
path = self.request.path.lstrip("/").split("/", 2)[-1]
|
||||||
|
@ -760,7 +761,8 @@ class FileRequestHandler(AuthorizedFileHandler):
|
||||||
assert self.request.method == "HEAD"
|
assert self.request.method == "HEAD"
|
||||||
|
|
||||||
def _escape_filename_to_ascii(self, basename: str) -> str:
|
def _escape_filename_to_ascii(self, basename: str) -> str:
|
||||||
return basename.encode("ascii", "replace").decode()
|
ret = basename.encode("ascii", "replace").decode()
|
||||||
|
return ret.replace('"', '\\"')
|
||||||
|
|
||||||
def _escape_filename_to_utf8(self, basename: str) -> str:
|
def _escape_filename_to_utf8(self, basename: str) -> str:
|
||||||
return urllib.parse.quote(basename, encoding="utf-8")
|
return urllib.parse.quote(basename, encoding="utf-8")
|
||||||
|
|
Loading…
Reference in New Issue