Python实现基于HTTP文件传输实例
本文实例讲述了Python实现基于HTTP文件传输的方法。分享给大家供大家参考。具体实现方法如下:
一、问题:
因为需要最近看了一下通过POST请求传输文件的内容并且自己写了Server和Client实现了一个简单的机遇HTTP的文件传输工具
二、实现代码:
Server端:
#coding=utf-8 fromBaseHTTPServerimportBaseHTTPRequestHandler importcgi class PostHandler(BaseHTTPRequestHandler): defdo_POST(self): form=cgi.FieldStorage( fp=self.rfile, headers=self.headers, environ={'REQUEST_METHOD':'POST', 'CONTENT_TYPE':self.headers['Content-Type'], } ) self.send_response(200) self.end_headers() self.wfile.write('Client:%sn'%str(self.client_address)) self.wfile.write('User-agent:%sn'%str(self.headers['user-agent'])) self.wfile.write('Path:%sn'%self.path) self.wfile.write('Formdata:n') forfieldinform.keys(): field_item=form[field] filename=field_item.filename filevalue =field_item.value filesize=len(filevalue)#文件大小(字节) printlen(filevalue) withopen(filename.decode('utf-8')+'a','wb')asf: f.write(filevalue) return if__name__=='__main__': fromBaseHTTPServerimportHTTPServer sever=HTTPServer(('localhost',8080),PostHandler) print'Startingserver,use<Ctrl-C>tostop' sever.serve_forever()
Client端:
#coding=utf-8 importrequests url='http://localhost:8080' path=u'D:快盘阿狸头像.jpg' printpath files={'file':open(path,'rb')} r=requests.post(url,files=files) printr.url,r.text
希望本文所述对大家的Python程序设计有所帮助。