zoukankan      html  css  js  c++  java
  • 上传下载

    # 默写 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:python10day33作业.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()

    
    
  • 相关阅读:
    微信小程序组件loading
    微信小程序组件toast
    微信小程序组件modal
    Thread was being aborted.
    Linux(Contos7.5)环境搭建之Linux远程登录(一)
    Method 'ExecuteAsync' in type 'System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy' does not have an implementation
    Cannot find class [org.springframework.http.converter.json.MappingJacksonHttpMessageConverter]
    Visual Studio 调试时无法命中断点
    springjdbc使用c3p0连接池报错 java.lang.NoClassDefFoundError: com/mchange/v2/ser/Indirector
    JUnit initializationError错误
  • 原文地址:https://www.cnblogs.com/mys6/p/10799965.html
Copyright © 2011-2022 走看看