Pastebin

Paste #1341: source

< previous paste - next paste>

Pasted by tdn

Download View as text

~/tmp $ cat post.py                                                                                                                      
import httplib, mimetypes                                                                                                                
                                                                                                                                         
host = "thomasdamgaard.dk"                                                                                                               
selector = "/paste/store_paste.php"                                                                                                      
fields = [('sender_name', 'python'), ('paste_title', 'title'), ('submit', 'Paste'), ('paste', 'foo bar')]                                
files = []                                                                                                                               
def post_multipart(host, selector, fields, files):                                                                                       
    """                                                                                                                                  
    Post fields and files to an http host as multipart/form-data.                                                                        
    fields is a sequence of (name, value) elements for regular form fields.                                                              
    files is a sequence of (name, filename, value) elements for data to be uploaded as files                                             
    Return the server's response page.                                                                                                   
    """                                                                                                                                  
    content_type, body = encode_multipart_formdata(fields, files)                                                                        
    h = httplib.HTTP(host)                                                                                                               
    h.putrequest('POST', selector)                                                                                                       
    h.putheader('content-type', content_type)                                                                                            
    h.putheader('content-length', str(len(body)))                                                                                        
    h.endheaders()                                                                                                                       
    h.send(body)                                                                                                                         
    errcode, errmsg, headers = h.getreply()                                                                                              
    return h.file.read()                                                                                                                 
                                                                                                                                         
def encode_multipart_formdata(fields, files):
    """
    fields is a sequence of (name, value) elements for regular form fields.
    files is a sequence of (name, filename, value) elements for data to be uploaded as files
    Return (content_type, body) ready for httplib.HTTP instance
    """
    BOUNDARY = '----------ThIs_Is_tHe_bouNdaRY_$'
    CRLF = '\r\n'
    L = []
    for (key, value) in fields:
        L.append('--' + BOUNDARY)
        L.append('Content-Disposition: form-data; name="%s"' % key)
        L.append('')
        L.append(value)
    for (key, filename, value) in files:
        L.append('--' + BOUNDARY)
        L.append('Content-Disposition: form-data; name="%s"; filename="%s"' % (key, filename))
        L.append('Content-Type: %s' % get_content_type(filename))
        L.append('')
        L.append(value)
    L.append('--' + BOUNDARY + '--')
    L.append('')
    body = CRLF.join(L)
    content_type = 'multipart/form-data; boundary=%s' % BOUNDARY
    return content_type, body

def get_content_type(filename):
    return mimetypes.guess_type(filename)[0] or 'application/octet-stream'


print post_multipart(host, selector, fields, files)

New Paste


Do not write anything in this field if you're a human.

Go to most recent paste.