Python:文件上传下载

server.py

import socket
import pickle

# 不传参数,默认使用基于网络类型的套接字,协议:TCP
server = socket.socket()
# 告诉别人server的地址和端口
# 端口的范围是0-65535,但是0-1023这些是默认端口不能使用
server.bind(('192.168.1.107', 18080))
# 能同时接受的连接
server.listen()
# 接受客户端的连接,阻塞等待
conn, addr = server.accept()

pic_dic = conn.recv(1024)
dic = pickle.loads(pic_dic)
if dic['opt'] == 'upload':
    # 上传功能
    filename = '1' + dic['filename']
    with open(filename, 'w', encoding='utf-8') as f:
        f.write(dic['content'])
elif dic['opt'] == 'download':
    # 下载功能
    filename = dic['filename']
    with open(filename, 'r', encoding='utf-8') as f:
        content = f.read()

    pic_content = pickle.dumps(content)
    conn.send(pic_content)
else:
    print('错误')

conn.close()
server.close()

client.py

import socket
import os
import pickle

client = socket.socket()
client.connect(('192.168.1.107', 18080))

menu = {'1': 'upload', '2': 'download'}
for k, v in menu.items():
    print(k, v)

num = input('请输入功能选项:')
if num == '1':
    # 上传功能
    file_path = input('请输入一个文件的绝对路径:')
    filename = os.path.basename(file_path)
    with open(file_path, 'r', encoding='utf-8') as f:
        content = f.read()

    # 执行功能,文件名,文件内容
    dic = {'opt': menu.get(num), 'filename': filename, 'content': content}
    # print(dic)
    pic_dic = pickle.dumps(dic)
    client.send(pic_dic)
    print('文件上传成功!')
elif num == '2':
    # 下载功能
    file_path = input('请输入一个文件的绝对路径:')
    filename = os.path.basename(file_path)
    dic = {'opt': menu.get(num), 'filename': filename}
    # print(dic)
    pic_dic = pickle.dumps(dic)
    client.send(pic_dic)

    pic_content = client.recv(1024)
    content = pickle.loads(pic_content)
    with open('2' + filename, 'w', encoding='utf-8') as f:
        f.write(content)
    print('文件下载成功!')
else:
    print('错误')

client.close()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值