day26

通过socket上传文件。

post_client.py

 import socket
import os
sk = socket.socket()
print(sk)
address = ('127.0.0.1', 8003)
sk.connect(address) BASE_DIR = os.path.dirname(os.path.abspath(__file__))#当前执行文件路径 while True:
inp = input('>>>').strip()#post abc.png
cmd, path = inp.split('|') #post, 需传送的文件即abc.png
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')#字节b为bytes
has_sent = 0
while has_sent != file_size:#相同大小说明全部上传
data = f.read(1024)#取一部分发
sk.sendall(data)
has_sent += len(data) f.close()
print('上传成功') sk.close()
#print(sk)

post_server.py

 import socket
import subprocess
sk = socket.socket()#创建socket
import os
print(sk) address = ('127.0.0.1', 8003)#本机地址
sk.bind(address)#为socket绑定IP和端口号 sk.listen(3)#限制排队的个数
print('waiting......')
BASE_DIR = os.path.dirname(os.path.abspath(__file__)) while True:
conn, addr = sk.accept() while True:
data = conn.recv(1024)
cmd, filename, filesize = str(data, 'utf8').split('|')#获得信息
path = os.path.join(BASE_DIR, 'far', filename)#新路径
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()#不能忘记关闭,否则出错
print('接收完毕!')
sk.close()#全关

执行post_server.py,再执行post_client.py,在client中输入post|abc.png进行上传。

(其中abc.png和两个执行文件同级,在以上三个文件相同位置还存在一个far包)

Python(文件上传)的更多相关文章

  1. python 文件上传本地服务器

    1:python之上传文件 1.1.url代码 """untitled1222 URL Configuration The `urlpatterns` list rout ...

  2. python文件上传工具实现

    0x00 之前验收waf模块webshell效果,组网pc--waf--webserver,收集网络上的webshell样本,进行上传测试.由于数量较多8000+个样本, 只好写了个工具进行验收. w ...

  3. python文件上传

    1.前端代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...

  4. python文件上传的三种方式

    def upload(request): return render(request, 'upload.html') def upload_file(request): username = requ ...

  5. python运维开发(二十一)----文件上传和验证码+session

    内容目录: 文件上传 验证码+session 文件和图片的上传功能 HTML Form表单提交,实例展示 views 代码 HTML ajax提交 原生ajax提交,XMLHttpRequest方式上 ...

  6. selenium+python自动化测试系列(二):AutoIt工具实现本地文件上传

    AutoIt使用简单说明 AutoIt的安装这里就不在啰嗦,可以参考AutoIt安装或者自行搜索解决. 第一步:定位上传文件路径的文本框 这里举例说明,如何定位?如图 这里我们看到上传文件的类型是bu ...

  7. python+selenium+autoit实现文件上传

    问题 在做web端ui层自动化的时候会碰到文件上传的操作,经常有朋友问到,这里总结一下 解决方案 第一种:type=file的上传文件,类似如下的 使用类似这样的代码就可以完成: driver.fin ...

  8. 基于hi-nginx的web开发(python篇)——表单处理和文件上传

    hi-nginx会自动处理表单,所以,在hi.py框架里,要做的就是直接使用这些数据. 表单数据一般用GET和POST方法提交.hi-nginx会把这些数据解析出来,放在form成员变量里.对pyth ...

  9. python Django之文件上传

    python Django之文件上传 使用Django框架进行文件上传共分为俩种方式 一.方式一 通过form表单进行文件上传 #=================================== ...

随机推荐

  1. canvas学习持续更新

    参考:菜鸟教程,canvas教程 绘制一个简单的矩形 <body> <canvas id="myCanvas" width="200" hei ...

  2. Ubuntu下部分软件的简介及安装

    1.安装linux摄像头应用软件cheese sudo apt-get install cheese 2.Ubuntu Tweak    Ubuntu Tweak是一款专门为Ubuntu(GNOME桌 ...

  3. mvc模拟实现

    .定义httpmodule <system.webServer> <modules> <add name="UrlRoutingModule" typ ...

  4. python性能监控初试

    标 题: python性能监控初试作 者: itdef链 接: http://www.cnblogs.com/itdef/p/3990765.html 欢迎转帖 请保持文本完整并注明出处 之前性能统计 ...

  5. httpclient之基本类

    HttpHost类  主机类  主要属性有域名和端口. HttpRoute类  路由类  主要属性有targetHost(目标主要).proxyChain[]代理链 RouteTracker类  和H ...

  6. Mybatis传值为空需要配置JdbcType来解决吗?(XML文件不需要配置JdbcType)

    1,解决思路,配置自定义的语言驱动,重写自己的Paramethander package cn.com.servyou.gxdqy.tool.xmlhelper; import org.apache. ...

  7. 内网IP和公网IP的区别

        内网IP和公网IP的区别     什么是内网IP: 一些小型企业或者学校,通常都是申请一个固定的IP地址,然后通过IP共享(IP Sharing),使用整个公司或学校的机器都能够访问互联网.而 ...

  8. 2018.07.09 顺序对齐(线性dp)

    顺序对齐 题目描述 考虑两个字符串右对齐的最佳解法.例如,有一个右对齐方案中字符串是 AADDEFGGHC 和 ADCDEGH. AAD~DEFGGHC ADCDE~~GH~ 每一个数值匹配的位置值 ...

  9. jquery ajax 为什么会 多次请求

    因你绑定的时间会随着你调用的地方增加而增加的,jquery 就是有这样的现象,举个例子让你解决吧,如果有个地方$('#Id').click(function(){ $.ajax({})})这样用对吧, ...

  10. Deployment failure on Tomcat 6.x. Could not copy all resources to D:\...\webapps\eptInfo. If a file is locked, you can wait until the lock times out to redeploy, or stop the server and redeploy, or ma

    tomcat服务并没有启动.工程中之前引了一个包,后来这个包被删除了,但是因为已经发布过这个工程了,所以classpath中就有这个包名了,这样发布的时候也会去找这个包但是已经不存在了,所以无copy ...