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. mysql 版本bug

    mysql命令gruop by报错this is incompatible with sql_mode=only_full_group_by 在mysql 工具 搜索或者插入数据时报下面错误: ERR ...

  2. python编辑excel

    转: http://www.cnblogs.com/lhj588/archive/2012/01/06/2314181.html

  3. Strand Specific mRNA sequencing 之重要性与分析

    Strand Specific mRNA sequencing 之重要性与分析 发表评论 2,761 A+ 所属分类:Bioinformatics   收  藏 研究生物基因转录体的方法有许多种,而使 ...

  4. Codeforces 595B. Pasha and Phone 容斥

    B. Pasha and Phone time limit per test 1 second memory limit per test 256 megabytes input standard i ...

  5. dedecms目录说明

    1.有多个common.inc.php文件,注意引入的是哪一个,引入以后,里面的常量才可以用: 2.路径向上跳转 require_once('../../plus/phpexcel/PHPExcel. ...

  6. part1:6-Linux文本编辑器vi

    vi编辑器简介: vi是Linux系统的第一个全屏幕交互式编辑器:vim则是vi的升级版得到广大用户青睐. vim有三种工作模式:命令行模式.插入模式.底行模式 命令行模式常用功能键: yy:复制当前 ...

  7. 【JS】判断浏览器类型

    判断原理 JavaScript是前端开发的主要语言,我们可以通过 编写JavaScript程序来判断浏览器的类型及版本.JavaScript判断浏览器类型一般有两种办法,一种是根据各种浏览器独有的属性 ...

  8. 前端之css笔记3

    一 display属性 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...

  9. javascript 字符数组转换成以逗号隔开的字符串

    var ids = [];angular.forEach(pulsarServers,function (server) { ids.push(server.id);});ids = ids.join ...

  10. Linux服务器部署系列之三—DNS篇

    网上介绍DNS的知识很多,在这里我就不再讲述DNS原理及做名词解释了.本篇我们将以一个实例为例来讲述DNS的配置,实验环境如下: 域名:guoxuemin.cn, 子域:shenzhen.guoxue ...