diff options
| -rw-r--r-- | rest_framework/parsers.py | 2 | ||||
| -rw-r--r-- | tests/test_parsers.py | 4 | 
2 files changed, 5 insertions, 1 deletions
| diff --git a/rest_framework/parsers.py b/rest_framework/parsers.py index 82caa6f6..161bc809 100644 --- a/rest_framework/parsers.py +++ b/rest_framework/parsers.py @@ -303,7 +303,7 @@ class FileUploadParser(BaseParser):          """          encoded_filename = force_text(disposition['filename*'])          try: -            charset, filename = encoded_filename.split('\'\'', 1) +            charset, lang, filename = encoded_filename.split('\'', 2)              filename = urlparse.unquote(filename)          except (ValueError, LookupError):              filename = force_text(disposition['filename']) diff --git a/tests/test_parsers.py b/tests/test_parsers.py index d19b4651..bc84f1c7 100644 --- a/tests/test_parsers.py +++ b/tests/test_parsers.py @@ -127,6 +127,10 @@ class TestFileUploadParser(TestCase):          filename = parser.get_filename(self.stream, None, self.parser_context)          self.assertEqual(filename, 'ÀĥƦ.txt') +        self.__replace_content_disposition('inline; filename=fallback.txt; filename*=utf-8\'en-us\'ÀĥƦ.txt') +        filename = parser.get_filename(self.stream, None, self.parser_context) +        self.assertEqual(filename, 'ÀĥƦ.txt') +          self.__replace_content_disposition('inline; filename=fallback.txt; filename*=utf-8--ÀĥƦ.txt')          filename = parser.get_filename(self.stream, None, self.parser_context)          self.assertEqual(filename, 'fallback.txt') | 
