zoukankan      html  css  js  c++  java
  • python文件上传

    实现:client上传图片文件到server

    如下图所示,图片与post_client.py在同一当前目录

    -------------------post_server.py-----------------------------------------

    import subprocess
    #subprocess.Popen,主要用Popen这个类实现shell
    import os
    import socket
    sk=socket.socket()
    print(sk)
    address=('127.0.0.1',8005)
    sk.bind(address)
    sk.listen(3)
    print('waiting.....')
    BASE_DIR=os.path.dirname(os.path.abspath(__file__))
    while True:
    conn,addr = sk.accept()
    print(addr)
    while True:
    data=conn.recv(1024) #接收
    cmd,filename,filesize=str(data,'utf-8').split('|') #用三个变量解析接收的并用|分隔
    path=os.path.join(BASE_DIR,'yuan','filename') #路径拼接,这里指定在yuan下
    filesize=int(filesize)

    #循环收
    f=open(path,'ab')
    has_receive=0
    while has_receive!=filesize:
    data=conn.recv(1024)
    f.write(data)
    has_receive+=len(data)
    f.close()


    --------------------post_client.py------------------------
    import socket
    import os
    sk=socket.socket()
    print(sk)
    address=('127.0.0.1',8005)
    sk.connect(address)
    BASE_DIR=os.path.dirname(os.path.abspath(__file__))

    while True:
    inp=input('>>>').strip() #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,'utf-8')) #发过去
    #循环发
    f = open(path, 'rb') # 打开
    has_sent=0 #已发的
    while has_sent !=file_size:
    data=f.read(1024) #每次1024个的一段段发
    sk.sendall(data)
    has_sent+=len(data)
    f.close()
    print('上传成功')




    sk.close()
  • 相关阅读:
    【转】CUDA5/CentOS6.4
    【转】centos 6.4 samba 安装配置
    【转】Install MATLAB 2013a on CentOS 6.4 x64 with mode silent
    【转】Getting xrdp to work on CentOS 6.4
    【VLFeat】使用matlab版本计算HOG
    Unofficial Windows Binaries for Python Extension Packages
    March 06th, 2018 Week 10th Tuesday
    March 05th, 2018 Week 10th Monday
    March 04th, 2018 Week 10th Sunday
    March 03rd, 2018 Week 9th Saturday
  • 原文地址:https://www.cnblogs.com/dbslinux/p/11242219.html
Copyright © 2011-2022 走看看