上传下载

# 默写 TCP UDP 文件夹中的代码
# 完成一个上传和下载文件的小程序
# server端 :根据客户端需求自定义
# client端
# 客户端启动之后
# 选择 上传操作 还是 下载操作
# 如果是上传操作 : 输入要上传的文件路径
# 基础需求 :直接将文件上传到默认目录
# 进阶需求 :将文件上传到指定目录
# 如果是下载文件 : 输入要下载的文件路径
# 基础需求 : 直接将文件下载到当前目录
# 进阶需求 :将文件下载到指定目录
# 字符串
# 文件 - 读文件 转码 写文件
# 默写 TCP UDP 文件夹中的代码
# 完成一个上传和下载文件的小程序
# server端 :根据客户端需求自定义
# client端
# 客户端启动之后
# 选择 上传操作 还是 下载操作
# 如果是上传操作 : 输入要上传的文件路径
# 基础需求 :直接将文件上传到默认目录
# 进阶需求 :将文件上传到指定目录
# 如果是下载文件 : 输入要下载的文件路径
# 基础需求 : 直接将文件下载到当前目录
# 进阶需求 :将文件下载到指定目录
# 字符串
# 文件 - 读文件 转码 写文件
# 默写 TCP UDP 文件夹中的代码
# 完成一个上传和下载文件的小程序
# server端 :根据客户端需求自定义
# client端
# 客户端启动之后
# 选择 上传操作 还是 下载操作
# 如果是上传操作 : 输入要上传的文件路径
# 基础需求 :直接将文件上传到默认目录
# 进阶需求 :将文件上传到指定目录
# 如果是下载文件 : 输入要下载的文件路径
# 基础需求 : 直接将文件下载到当前目录
# 进阶需求 :将文件下载到指定目录
# 字符串
# 文件 - 读文件 转码 写文件
# 默写 TCP UDP 文件夹中的代码
# 完成一个上传和下载文件的小程序
# server端 :根据客户端需求自定义
# client端
# 客户端启动之后
# 选择 上传操作 还是 下载操作
# 如果是上传操作 : 输入要上传的文件路径
# 基础需求 :直接将文件上传到默认目录
# 进阶需求 :将文件上传到指定目录
# 如果是下载文件 : 输入要下载的文件路径
# 基础需求 : 直接将文件下载到当前目录
# 进阶需求 :将文件下载到指定目录
# 字符串
# 文件 - 读文件 转码 写文件

server端
import json
import socket

sk = socket.socket()
sk.bind(('127.0.0.1',8080))
sk.listen()

conn,addr = sk.accept()
content = conn.recv(1024).decode('utf-8')
content_dic = json.loads(content)
if content_dic['operate'] == 'upload':
conn.send(b'received!')
with open(content_dic['filename'],'wb') as f:
while content_dic['filesize']:
file = conn.recv(1024)
f.write(file)
content_dic['filesize'] -= len(file)
conn.close()
sk.close()


client端
import os
import json
import socket

sk = socket.socket()
sk.connect(('127.0.0.1',8080))

def get_filename(file_path):
filename = os.path.basename(file_path)
return filename

#选择 操作
operate = ['upload','download']
for num,opt in enumerate(operate,1):
print(num,opt)
num = int(input('请输入您要做的操作序号 : '))
if num == 1:
'''上传操作'''
#file_path = 'E:\python10\day33\作业.py'
file_path = input('请输入要上传的文件路径 : ')
# 告诉对方要上传的文件的名字
file_name = get_filename(file_path)
# 读要上传的文件 存成字符串
with open(file_path,encoding='utf-8') as f:
content = f.read()
dic = {'operate':'upload','filename':file_name,'content':content}
# 将字符串send给server端
str_dic = json.dumps(dic)
sk.send(str_dic.encode('utf-8'))
# server端接收 bytes转码程字符串
# server端打开文件 写文件
elif num == 2:
'''下载操作'''
sk.close()


posted @ 2019-05-01 15:40  大圣原来姓毛  阅读(163)  评论(0编辑  收藏  举报