mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-02-02 20:54:42 +03:00
Refactor disposition unpacking for clarity
This commit is contained in:
parent
959e234260
commit
3f7fad2e5a
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue
Block a user