
正文
老男孩 python学习自修第二十二天【文件上传与下载】
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
1.使用socket实现文件上传
server.py
#!/usr/bin/env python# _*_ coding:UTF-8 _*_import osimport SocketServerclass MyServer(SocketServer.BaseRequestHandler): def handle(self): base_path = "/Users/liudaoqiang/" conn = self.request print "connected" while True: pre_data = conn.recv(1024) cmd, file_name, file_size = pre_data.split("|") recv_size = 0 file_dir = os.path.join(base_path, file_name) f = file(file_dir, "wb") Flag = True while Flag: if int(file_size) > recv_size: data = conn.recv(1024) recv_size += len(data) else: recv_size = 0 Flag = False f.write(data) print "upload success" f.close()instance = SocketServer.ThreadingTCPServer(("127.0.0.1", 9999), MyServer)instance.serve_forever()
client.py
# !/usr/bin/env python# _*_ coding:UTF-8 _*_import socketimport osif __name__ == "__main__": client = socket.socket() ip_port = ("127.0.0.1", 9999) client.connect(ip_port) while True: input = raw_input(">>>>") cmd, path = input.split("|") file_name = os.path.basename(path) file_size = os.stat(path).st_size client.send(cmd + "|" + file_name + "|" + str(file_size)) send_size = 0 f = file(path, "rb") Flag = True while Flag: if send_size + 1024 > file_size: data = f.read((file_size - send_size)) Flag = False else: data = f.read(1024) send_size += 1024 f.close() client.close()







