Refactor disposition unpacking for clarity

This commit is contained in:
Jason Bittel 2014-09-05 16:27:55 -07:00
parent 959e234260
commit 3f7fad2e5a

View File

@ -289,22 +289,23 @@ class FileUploadParser(BaseParser):
try: try:
meta = parser_context['request'].META meta = parser_context['request'].META
disposition = parse_header(meta['HTTP_CONTENT_DISPOSITION'].encode('utf-8'))[1] disposition = parse_header(meta['HTTP_CONTENT_DISPOSITION'].encode('utf-8'))
if 'filename*' in disposition: filename_parm = disposition[1]
return self.get_encoded_filename(disposition) if 'filename*' in filename_parm:
return force_text(disposition['filename']) return self.get_encoded_filename(filename_parm)
return force_text(filename_parm['filename'])
except (AttributeError, KeyError): except (AttributeError, KeyError):
pass pass
def get_encoded_filename(self, disposition): def get_encoded_filename(self, filename_parm):
""" """
Handle encoded filenames per RFC6266. See also: Handle encoded filenames per RFC6266. See also:
http://tools.ietf.org/html/rfc2231#section-4 http://tools.ietf.org/html/rfc2231#section-4
""" """
encoded_filename = force_text(disposition['filename*']) encoded_filename = force_text(filename_parm['filename*'])
try: try:
charset, lang, filename = encoded_filename.split('\'', 2) charset, lang, filename = encoded_filename.split('\'', 2)
filename = urlparse.unquote(filename) filename = urlparse.unquote(filename)
except (ValueError, LookupError): except (ValueError, LookupError):
filename = force_text(disposition['filename']) filename = force_text(filename_parm['filename'])
return filename return filename