socket实现文件的上传
Posted god-for-speed
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了socket实现文件的上传相关的知识,希望对你有一定的参考价值。
#-------server层 import socket import json sk=socket.socket() sk.bind((‘10.70.2.143‘,8080)) sk.listen() conn,addr=sk.accept() #通信 str_dic=conn.recv(9090).decode(‘utf-8‘) #将字符串形式反序列化为字典 dic=json.loads(str_dic) if dic[‘opt‘]==‘upload‘: filename=‘1‘+dic[‘filename‘] with open (filename,‘w‘,encoding=‘utf-8‘) as f: f.write(dic[‘content‘]) if dic[‘opt‘]==‘download‘: pass conn.close() sk.close() #-------client层 import socket import os import json sk=socket.socket() sk.connect((‘10.70.2.143‘,8080)) menu={‘1‘:‘upload‘,‘2‘:‘download‘} for k,v in menu.items(): print(k,v) num=input("请输入功能选项:") if num==‘1‘: #上传功能 #(功能,文件名,文件路径) dic={‘opt‘:menu[num],‘filename‘:None,‘content‘:None} file_path=input("请输入需要上传的文件路径") #D:PygametestscrapyTestsocket_file_test.py #获取路径的文件名 filename=os.path.basename(file_path) #获取路径的文件内容 with open(file_path,‘r‘,encoding=‘utf-8‘) as f: content=f.read() dic[‘filename‘]=filename dic[‘content‘]=content #将字典序列化为字符串的形式 str_dic=json.dumps(dic) #传给服务器 sk.send(str_dic.encode(‘utf-8‘)) if num==‘2‘: pass sk.close()
以上是关于socket实现文件的上传的主要内容,如果未能解决你的问题,请参考以下文章