python post上传文件

1.使用urllib2原始的方式

import urllib2
__author__ = 'huangjianan'

def post_file(url,filepath,header):
    boundary = 'IYhWIT-aMbWSbS32CkryLCcV4lp-3N'
    #body
    pic_type=filepath.split('.')[-1]
    data = []
    data.append('--%s' % boundary)
    fr=open(filepath,'rb')
    data.append('Content-Disposition: form-data; name="%s"; filename="test.%s"' % ('avataFile',pic_type))
    data.append('Content-Type: image/%s\r\n' % pic_type)
    buffer=fr.read()
    data.append(buffer)
    fr.close()
    data.append('--%s--\r\n' % boundary)
    http_body='\r\n'.join(data)
    req=urllib2.Request(url, data=http_body)
    #header
    for (k,v) in header.items():
        req.add_header(k,v)
    resp = urllib2.urlopen(req, timeout=5)
    response=resp.read()
    return response

  2.使用requests方式

import requests
headers = {'content-type': 'application/x-www-form-urlencoded; charset=UTF-8',
           'Accept-Encoding':'gzip,deflate'}
fileparams = {"Filedata": (filepath.split("/")[-1], open(abspath, "rb"), "application/octet-stream")}
r = requests.post(url, data={},files=fileparams, headers=headers)

  

posted @ 2014-09-23 20:11  qiguaismuty  阅读(361)  评论(0编辑  收藏  举报