zoukankan      html  css  js  c++  java
  • Python 简单的文件上传功能

    简单地在程序当前目录下上传一张图片: 1.png 到程序的 yuan 文件夹下。这里使用的是固定参数 post,如果后期有需求,可以增加判断来更加完善程序。

    # server 端
    import socket, os
    
    sk = socket.socket()
    address=('127.0.0.1', 8000)
    sk.bind(address)
    sk.listen(3)
    print('waiting....')
    BASE_DIR = os.path.dirname(os.path.abspath(__file__))
    
    while 1:
        conn, addr = sk.accept()
        while 1:
            data = conn.recv(1024)
            cmd, filename, filesize = str(data, 'utf8').split('|')
            path = os.path.join(BASE_DIR, 'yuan', filename)
    
            f = open(path, 'ab')
            has_receive = 0
            while has_receive != filesize:
                data = conn.recv(1024)
                f.write(data)
                has_receive += len(data)
    
            f.close()
    
    # client 端
    import socket, os
    sk = socket.socket()
    print(sk)
    
    address = ('127.0.0.1', 8000)
    sk.connect(address)
    
    BASE_DIR = os.path.dirname(os.path.abspath(__file__))
    #print(BASE_DIR)
    
    while True:
        inp = input('>>>') # post|1.png
        cmd, path = inp.split('|')
        path = os.path.join(BASE_DIR, path)
    
        filename = os.path.basename(path)
        file_size = os.stat(path).st_size
        file_info = 'post|%s|%s'%(filename, file_size)
    
        sk.sendall(bytes(file_info, 'utf8'))
    
        f = open(path, 'rb')
        has_sent = 0
        while has_sent != file_size:
            data = f.read(1024)
            sk.sendall(data)
            has_sent += len(data)
        f.close()
        print('上传成功')
    
    运行结果:
    <socket.socket fd=296, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0>
    >>>post|1.png
    上传成功
    
  • 相关阅读:
    一往直前!贪心法
    Longest subarray of target sum
    动态规划-最长公共子序列/最长公共子串
    Short Encoding of Words
    Spiral Matrix
    Longest Repeating Character Replacement
    伤怀之美
    宁静是一种生产力
    POJ 2524 Ubiquitous Religions 【并查集】
    POJ 1611 The Suspects【并查集】
  • 原文地址:https://www.cnblogs.com/klvchen/p/9251688.html
Copyright © 2011-2022 走看看