• 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()
  • 相关阅读:
    Golang 爬虫02
    Golang使用正则
    gin框架对接快递100 查询快递跟踪记录 Golang实现快递查询
    Jetbrains系列产品2019.3.4最新激活方法[持续更新]
    Linux下安装Fiddler
    Golang 爬虫01
    Github进行fork后如何与原仓库同步
    Pr 的导出视频
    Linux-平均负载指数
    Linux-进程管理命令
  • 原文地址:https://www.cnblogs.com/dbslinux/p/11242219.html
Copyright © 2020-2023  润新知