コード例 #1
0
ファイル: framework.py プロジェクト: animeshinvinci/pycopia
def parse_file_upload(header_dict, post_data):
    "Returns a tuple of (POST URLQuery, FILES URLQuery)"
    raw_message = '\r\n'.join(['%s:%s' % pair for pair in header_dict.items()])
    raw_message += '\r\n\r\n' + post_data
    msg = email.message_from_string(raw_message)
    POST = urlparse.URLQuery()
    FILES = urlparse.URLQuery()
    for submessage in msg.get_payload():
        if isinstance(submessage, email.Message.Message):
            cd = httputils.get_header(submessage['Content-Disposition'])

            if cd.parameters.has_key('filename'):
                assert type(submessage.get_payload()) is not list, \
                                   "Nested MIME messages are not supported"
                if not cd.parameters['filename'].strip():
                    continue
                # IE submits the full path, so trim everything but the basename.
                # (We can't use os.path.basename because it expects Linux paths.)
                filename = cd.parameters['filename'][cd.parameters['filename'].rfind("\\")+1:]
                FILES.appendlist(cd.parameters['name'], {
                    'filename': filename,
                    'content-type': (submessage.has_key('Content-Type') and submessage['Content-Type'] or None),
                    'content': submessage.get_payload(),
                })
            else:
                POST.appendlist(cd.parameters['name'], submessage.get_payload())
    return POST, FILES
コード例 #2
0
ファイル: framework.py プロジェクト: animeshinvinci/pycopia
def parse_file_upload(header_dict, post_data):
    "Returns a tuple of (POST URLQuery, FILES URLQuery)"
    raw_message = '\r\n'.join(['%s:%s' % pair for pair in header_dict.items()])
    raw_message += '\r\n\r\n' + post_data
    msg = email.message_from_string(raw_message)
    POST = urlparse.URLQuery()
    FILES = urlparse.URLQuery()
    for submessage in msg.get_payload():
        if isinstance(submessage, email.Message.Message):
            cd = httputils.get_header(submessage['Content-Disposition'])

            if cd.parameters.has_key('filename'):
                assert type(submessage.get_payload()) is not list, \
                                   "Nested MIME messages are not supported"
                if not cd.parameters['filename'].strip():
                    continue
                # IE submits the full path, so trim everything but the basename.
                # (We can't use os.path.basename because it expects Linux paths.)
                filename = cd.parameters['filename'][cd.parameters['filename'].
                                                     rfind("\\") + 1:]
                FILES.appendlist(
                    cd.parameters['name'], {
                        'filename':
                        filename,
                        'content-type':
                        (submessage.has_key('Content-Type')
                         and submessage['Content-Type'] or None),
                        'content':
                        submessage.get_payload(),
                    })
            else:
                POST.appendlist(cd.parameters['name'],
                                submessage.get_payload())
    return POST, FILES
コード例 #3
0
ファイル: client.py プロジェクト: kdart/pycopia3
 def _make_headers(self):
     if self._headersobjects:
         return self._headersobjects
     else:
         rv = httputils.Headers()
         for ht in self._headers:
             ht = ht.strip()
             if ht:
                 rv.append(httputils.get_header(ht))
         self._headersobjects = rv
         self._headers = []
         return rv
コード例 #4
0
ファイル: client.py プロジェクト: feitianyiren/pycopia3
 def _make_headers(self):
     if self._headersobjects:
         return self._headersobjects
     else:
         rv = httputils.Headers()
         for ht in self._headers:
             ht = ht.strip()
             if ht:
                 rv.append(httputils.get_header(ht))
         self._headersobjects = rv
         self._headers = []
         return rv