Merge pull request #260 from matrix-org/erikj/filename_order

Check for an internationalised filename first
This commit is contained in:
Erik Johnston 2015-08-27 11:18:01 +01:00
commit 4a6d894850

View File

@ -145,14 +145,20 @@ class BaseMediaResource(Resource):
content_disposition = headers.get("Content-Disposition", None) content_disposition = headers.get("Content-Disposition", None)
if content_disposition: if content_disposition:
_, params = cgi.parse_header(content_disposition[0],) _, params = cgi.parse_header(content_disposition[0],)
upload_name = params.get("filename", None)
if upload_name and not is_ascii(upload_name):
upload_name = None upload_name = None
else:
# First check if there is a valid UTF-8 filename
upload_name_utf8 = params.get("filename*", None) upload_name_utf8 = params.get("filename*", None)
if upload_name_utf8: if upload_name_utf8:
if upload_name_utf8.lower().startswith("utf-8''"): if upload_name_utf8.lower().startswith("utf-8''"):
upload_name = upload_name_utf8[7:] upload_name = upload_name_utf8[7:]
# If there isn't check for an ascii name.
if not upload_name:
upload_name_ascii = params.get("filename", None)
if upload_name_ascii and is_ascii(upload_name_ascii):
upload_name = upload_name_ascii
if upload_name: if upload_name:
upload_name = urlparse.unquote(upload_name) upload_name = urlparse.unquote(upload_name)
try: try: