本示例在对socket有了基本了解之后,可以实现基本的文件上传。首先先介绍一下目录结构,server_data文件夹是用来存放客户端上传的文件,client_data是模拟客户端文件夹(目的是为了测试文件夹下的文件能否上传) ,还有两个主要的py文件,onload_server.py onload_client.py 。
目录结构如图:
下面直接上两段主要py文件代码: 客户端(上传端)代码:
1 #__author__:Kelvin 2 #date:2020/2/16 11:09 3 4 import socket,os 5 6 sk=socket.socket() 7 address=("127.0.0.1",8000) 8 sk.connect(address) 9 10 while True: 11 inp=input("请输入 命令|文件名:") # post|a.jpg 12 size=os.path.getsize(inp.split("|")[1]) 13 # print(size) 14 inp=inp+"|%s"%size 15 sk.send(inp.encode("utf8")) 16 sk.recv(1024) # 接收 避免粘包发送的无效数据 17 f=open(inp.split("|")[1],"rb") 18 sent_size=0 19 while sent_size!=size: 20 sent_data=f.read(1024) 21 sk.send(sent_data) 22 sent_size+=len(sent_data) 23 # print(sent_size) 24 f.close() 25 print("%s 文件上传成功..."%inp.split("|")[1].split("|")[-1]) 26 break 27 sk.close()