zoukankan      html  css  js  c++  java
  • 01 ftp上传简单示例客户端

    import os
    import socket
    import json
    import struct
    client = socket.socket()
    client.connect(('127.0.0.1',8001))
    
    #统计文件大小
    file_size = os.path.getsize(r'D:python_workspace_s18day029aaa.mp4')
    
    
    #统计文件描述信息,给服务端,服务端按照我的文件描述信息来保存文件,命名文件等等,现在放到一个字典里面了
    file_info = {
        'file_name':'aaa.mp4',
        'file_size':file_size,
    }
    
    #由于字典无法直接转换成bytes类型的数据,所以需要json来将字典转换为json字符串.在把字符串转换为字节类型的数据进行发送
    #json.dumps是将字典转换为json字符串的方法
    file_info_json = json.dumps(file_info)
    
    #将字符串转换成bytes类型的数据
    file_info_byte = file_info_json.encode('utf-8')
    
    #为了防止黏包现象,将文件描述信息的长度打包后和文件的描述信息的数据一起发送过去
    data_len = len(file_info_byte)
    data_len_struct = struct.pack('i',data_len)
    
    #发送文件描述信息
    client.send(data_len_struct + file_info_byte)
    
    #定义一个变量,=0,作为每次读取文件的长度的累计值
    sum = 0
    #打开的aaa.mp4文件,rb的形式,
    with open('aaa.mp4','rb') as f:
        #循环读取文件内容
        while sum < file_size:
            #每次读取的文件内容,每次读取1024B大小的数据
            every_read_data = f.read(1024)
            #将sum累加,统计长度
            sum += len(every_read_data)
            #将每次读取的文件的真实数据返送给服务端
            client.send(every_read_data)
  • 相关阅读:
    第四天 PYTHON 函数
    第四天 PYTHON 字符串格式化
    第四天 PYTHON 集合
    Linux使用sshfs挂载远程目录到本地
    linux通过安装包安装nginx和jdk
    使用ajax提交form表单,包括ajax文件上传
    Linux下mysql出错:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
    数据库连接池
    一台机器上安装两个tomcat
    mysql优化
  • 原文地址:https://www.cnblogs.com/work14/p/10235883.html
Copyright © 2011-2022 走看看