          parser_context = parser_context or {}
          request = parser_context['request']
          encoding = parser_context.get('encoding', settings.DEFAULT_CHARSET)
          meta = request.META
  
          try:
              disposition = parse_header(meta['HTTP_CONTENT_DISPOSITION'])
              filename = disposition[1]['filename']
          except KeyError:
              filename = None
  
          content_type = meta.get('HTTP_CONTENT_TYPE', meta.get('CONTENT_TYPE', ''))
          try:
              content_length = int(meta.get('HTTP_CONTENT_LENGTH', meta.get('CONTENT_LENGTH', 0)))
          except (ValueError, TypeError):
 
</s> remove         for handler in request.upload_handlers:
 </s> add         for handler in upload_handlers: </s> remove         counters = [0] * len(request.upload_handlers)
 </s> add         counters = [0] * len(upload_handlers) </s> remove         for handler in request.upload_handlers:
 </s> add         for handler in upload_handlers: </s> remove         self.parser_context = {'request': request}
 </s> add         self.parser_context = {'request': request, 'kwargs': {}}
        upload_handlers = request.upload_handlers
        filename = self.get_filename(stream, media_type, parser_context)
          parser_context = parser_context or {}
          request = parser_context['request']
          encoding = parser_context.get('encoding', settings.DEFAULT_CHARSET)
          meta = request.META
        upload_handlers = request.upload_handlers
        filename = self.get_filename(stream, media_type, parser_context)
        upload_handlers = request.upload_handlers
        filename = self.get_filename(stream, media_type, parser_context)
        upload_handlers = request.upload_handlers
        filename = self.get_filename(stream, media_type, parser_context)
        upload_handlers = request.upload_handlers
        filename = self.get_filename(stream, media_type, parser_context)
        upload_handlers = request.upload_handlers
        filename = self.get_filename(stream, media_type, parser_context)
        upload_handlers = request.upload_handlers
        filename = self.get_filename(stream, media_type, parser_context)
  
          content_type = meta.get('HTTP_CONTENT_TYPE', meta.get('CONTENT_TYPE', ''))
          try:
              content_length = int(meta.get('HTTP_CONTENT_LENGTH', meta.get('CONTENT_LENGTH', 0)))
          except (ValueError, TypeError):
keep keep keep keep replace replace replace replace replace replace keep keep keep keep keep
 Codebase improvements on FileUploadParser

* Added docstrings.
* Added `FileUploadParser.get_filename` to make it easier to override.
* Added url kwargs filename detection step.
* Updated tests corresponding to these changes. 
rest_framework/parsers.py