Exemple #1
0
 def _parse_content_type(self, raw: str) -> None:
     self._stored_content_type = raw
     if raw is None:
         # default value according to RFC 2616
         self._content_type = "application/octet-stream"
         self._content_dict = {}
     else:
         msg = HeaderParser().parsestr("Content-Type: " + raw)
         self._content_type = msg.get_content_type()
         params = msg.get_params()
         self._content_dict = dict(
             params[1:])  # First element is content type again
Exemple #2
0
    def _parse_content_disposition(self, headers):
        """
        Parse the content-disposition header and return the name and filename parameters. Content-disposition is
        deleted from the headers after retrieving its value. Filename is set to None, if it is not found.
        :param headers: headers for part
        :return: name string and filename string or None
        """
        name = 'Content-Disposition'

        # get content-disposition header
        content_disposition = name + ': ' + headers.pop(name.encode()).decode()

        # parse string for params
        message = HeaderParser().parsestr(content_disposition)
        params = dict(message.get_params(header=name))

        # get name and filename
        name = params['name']
        filename = params.get('filename')

        return name, filename