'Initialize the MultiPartParser object.
:META:
The standard ``META`` dictionary in Django request objects.
:input_data:
The raw post data, as a file-like object.
:upload_handler:
An UploadHandler instance that performs operations on the uploaded
data.
:encoding:
The encoding with which to treat the incoming data.'

def __init__(self, META, input_data, upload_handlers, encoding=None):

    content_type = META.get('HTTP_CONTENT_TYPE', META.get('CONTENT_TYPE', ''))
    if (not content_type.startswith('multipart/')):
        raise MultiPartParserError(('Invalid    Content-Type:    %s' % content_type))
    (ctypes, opts) = parse_header(content_type)
    boundary = opts.get('boundary')
    if ((not boundary) or (not cgi.valid_boundary(boundary))):
        raise MultiPartParserError(('Invalid    boundary    in    multipart:    %s' % boundary))
    try:
        content_length = int(META.get('HTTP_CONTENT_LENGTH', META.get('CONTENT_LENGTH', 0)))
    except (ValueError, TypeError):
        content_length = 0
    if (content_length <= 0):
        raise MultiPartParserError(('Invalid    content    length:    %r' % content_length))
    self._boundary = boundary
    self._input_data = input_data
    possible_sizes = [x.chunk_size for x in upload_handlers if x.chunk_size]
    self._chunk_size = min(([((2 ** 31) - 4)] + possible_sizes))
    self._meta = META
    self._encoding = (encoding or settings.DEFAULT_CHARSET)
    self._content_length = content_length
    self._upload_handlers = upload_handlers
