zoukankan      html  css  js  c++  java
  • python ftp上传

    server.py文件:

    #!/usr/bin/env python
    #coding:utf-8
    import SocketServer,os
    class MyServer(SocketServer.BaseRequestHandler):
        def handle(self):
            base_path = r'C:Users91135Desktop	est'
            conn = self.request
            print 'connected...'
            while True:
                pre_data = conn.recv(1024)
                #获取请求方法、文件名、文件大小
                cmd,file_name,file_size = pre_data.split('/')
                #已经接收文件的大小
                recv_size = 0
                #上传文件路径拼接
                file_dir = os.path.join(base_path,file_name)
                f = file(file_dir,'wb')
                Flag = True
                while Flag:
                    #未上传完毕,
                    if int(file_size)>recv_size:
                        #最多接收1024,可能接收的小于1024
                        data = conn.recv(1024) 
                        recv_size+=len(data)
                    #上传完毕,则退出循环
                    else:
                        #recv_size = 0
                        Flag = False
                        continue
                    #写入文件
                    f.write(data)
                print 'upload successed.'
                f.close()
     
    instance = SocketServer.ThreadingTCPServer(('127.0.0.1',9999),MyServer)
    instance.serve_forever()   
    

      

    client.py文件:

    #!/usr/bin/env python
    #coding:utf-8
    import socket,os
    ip_port = ('127.0.0.1',9999)
    sk = socket.socket()
    sk.connect(ip_port)
    #container = {'key':'','data':''}
    while True:
        input = raw_input('cmd and path:')#cmd和path之间用'/'分割
        cmd,path = input.split('/') 
        file_name = os.path.basename(path)
        file_size=os.stat(path).st_size
        sk.send(cmd+"/"+file_name+'/'+str(file_size))
        send_size = 0
        f= file(path,'rb')
        Flag = True
        while Flag:
            if send_size + 1024 >file_size:
                data = f.read(file_size-send_size)
                Flag = False
            else:
                data = f.read(1024)
                send_size+=1024
            sk.send(data)
        f.close()
        
    sk.close()
    

      

  • 相关阅读:
    保存在线的PDF文件
    官网下载Java
    可执行文件(ELF)格式的理解
    虚拟机不识别U盘
    安装和连接精简版sqlserver2008
    [ZT] Linuxfs Readinglist
    分析ext2文件系统磁盘分区结构
    wma/mp3等格式转换为apple有声电子书格式(m4b) 以及itunes导入码率设置
    Progressivedownload 对于文件格式的要求
    Scaling Redis
  • 原文地址:https://www.cnblogs.com/noticeable/p/15138155.html
Copyright © 2011-2022 走看看