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程序设计有所帮助。