Python模拟HTTP Post上传文件

使用urllib2模块构造http post数据结构,提交有文件的表单(multipart/form-data),本示例提交的post表单带有两个参数及一张图片,代码如下:

#buld post body data
        boundary = ----------%s % hex(int(time.time() * 1000))
        data = []
        data.append(--%s % boundary)
        
        data.append(Content-Disposition: form-data; name="%s"\r\n % username)
        data.append(jack)
        data.append(--%s % boundary)
        
        data.append(Content-Disposition: form-data; name="%s"\r\n % mobile)
        data.append(13800138000)
        data.append(--%s % boundary)
        
        fr=open(r/var/qr/b.png,rb)
        data.append(Content-Disposition: form-data; name="%s"; filename="b.png" % ‘profile)
        data.append(Content-Type: %s\r\n % image/png)
        data.append(fr.read())
        fr.close()
        data.append(--%s--\r\n % boundary)
    
        http_url=http://remotserver.com/page.php
        http_body=\r\n.join(data)
        try:
            #buld http request
            req=urllib2.Request(http_url, data=http_body)
            #header
            req.add_header(Content-Type, multipart/form-data; boundary=%s % boundary)
            req.add_header(User-Agent,Mozilla/5.0)
            req.add_header(Referer,http://remotserver.com/)
            #post data to server
            resp = urllib2.urlopen(req, timeout=5)
            #get response
            qrcont=resp.read()
            print qrcont
            
            
        except Exception,e:
            print http error


C#版本见:

模拟提交有文件上传的表单(通过http模拟上传文件)

Python模拟HTTP Post上传文件,布布扣,bubuko.com

Python模拟HTTP Post上传文件

上一篇:密码学-密码学Hash函数


下一篇:Android中关联源码的方法