Python实现文件上传
server端:
import socket import os sk = socket.socket() address = ('127.0.0.1',8000) sk.bind(address) sk.listen(3) print('writing............') BASE_DIR = os.path.dirname(os.path.abspath(__file__)) while True: conn,addr = sk.accept() # print(addr) while True: data = conn.recv(1024) #开始接收 cmd,filename,file_size = str(data,'utf8').split('|') path = os.path.join(BASE_DIR,'yuan',filename) file_size = int(file_size) f = open(path,'ab') has_receive = 0 while has_receive != file_size: data = conn.recv(1024) f.write(data) has_receive +=len(data) f.close() conn.close() sk.close()
client端:
import socket import os sk = socket.socket() address = ('127.0.0.1',8000) print(sk) sk.connect(address) BASE_DIR = os.path.dirname(os.path.abspath(__file__)) while True: inp = input('>>>').strip()#post|123.jpg cmd,path = inp.split('|') path = os.path.join(BASE_DIR,path) #路径拼接 filename = os.path.basename(path) file_size = os.stat(path).st_size file_info = 'post|%s|%s'%(filename,file_size) sk.sendall(bytes(file_info,'utf8')) f = open(path, 'rb') has_sent = 0 while has_sent != file_size: data = f.read(1024) sk.sendall(data) has_sent +=len(data) f.close() print('上传成功!!!!') sk.close()
上传结果:
先运行server端:
再运行client端:然后上传文件
本次上传文件,所上传的文件以及文件目录都在server端client端同意目录下进行
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步