def _parse_section_three(self, part, mimetypes):
        """ Parse & validate a part according to section #3

        The logic applied follows section 3 guidelines from top
        to bottom.
        """

        link = 'tools.ietf.org/html/rfc2388#section-3'

        if part.disposition != 'form-data' or not part.name:
            self.fail('Each part of a multipart/form-data requires a '
                      'Content-Disposition header with a disposition type '
                      'of "form-data" AND a unique "name" parameter.', link)
        elif part.type.lower() not in mimetypes:
            allowed = ', '.join(mimetypes)
            self.fail('Invalid upload Content-Type. Each part of the '
                      'multipart/form-data upload MUST be one of: %s. '
                      '%s is not allowed.' % (allowed, part.type), link)
Parse & validate a part according to section #3

        The logic applied follows section 3 guidelines from top
        to bottom.