Python(文件上传)
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(文件上传)的更多相关文章
- python 文件上传本地服务器
1:python之上传文件 1.1.url代码 """untitled1222 URL Configuration The `urlpatterns` list rout ...
- python文件上传工具实现
0x00 之前验收waf模块webshell效果,组网pc--waf--webserver,收集网络上的webshell样本,进行上传测试.由于数量较多8000+个样本, 只好写了个工具进行验收. w ...
- python文件上传
1.前端代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...
- python文件上传的三种方式
def upload(request): return render(request, 'upload.html') def upload_file(request): username = requ ...
- python运维开发(二十一)----文件上传和验证码+session
内容目录: 文件上传 验证码+session 文件和图片的上传功能 HTML Form表单提交,实例展示 views 代码 HTML ajax提交 原生ajax提交,XMLHttpRequest方式上 ...
- selenium+python自动化测试系列(二):AutoIt工具实现本地文件上传
AutoIt使用简单说明 AutoIt的安装这里就不在啰嗦,可以参考AutoIt安装或者自行搜索解决. 第一步:定位上传文件路径的文本框 这里举例说明,如何定位?如图 这里我们看到上传文件的类型是bu ...
- python+selenium+autoit实现文件上传
问题 在做web端ui层自动化的时候会碰到文件上传的操作,经常有朋友问到,这里总结一下 解决方案 第一种:type=file的上传文件,类似如下的 使用类似这样的代码就可以完成: driver.fin ...
- 基于hi-nginx的web开发(python篇)——表单处理和文件上传
hi-nginx会自动处理表单,所以,在hi.py框架里,要做的就是直接使用这些数据. 表单数据一般用GET和POST方法提交.hi-nginx会把这些数据解析出来,放在form成员变量里.对pyth ...
- python Django之文件上传
python Django之文件上传 使用Django框架进行文件上传共分为俩种方式 一.方式一 通过form表单进行文件上传 #=================================== ...
随机推荐
- Golang之waitgroup用法
我敲下一堆代码,终于长出了果实,今天是个伟大日子 package main import ( "fmt" "sync" "time" ) / ...
- 从输入url到显示网页发生了什么
原文链接:https://juejin.im/post/5bf23afa6fb9a049be5d1494 在浏览器中输入url到显示网页主要包含两个部分: 网络通信和页面渲染 互联网内各网络设备间的通 ...
- jar 包 的用处 ,dozer、poi、itext 、jxl 、jbarcode 、itextrenderer jquery 效果
1.dozer 做类型转换的, 新建 xml 文件 描述两个实体的对应关系 ,DozerBeanMapper mapper =new DozerBeanMapper().addMappingFiles ...
- linux下第一个C程序
首先,用vi编辑器新建一个文件 $vi hi.c 输入以下的程序(怎么用vi不说了) #include <stdio.h> int main() { printf("hello. ...
- JavaScript 静态方法和实例方法
总结: 直接定义在构造函数上的方法和属性是静态的, 定义在构造函数的原型和实例上的方法和属性是非静态的 静态方法: function ClassA(){ //定义构造函数 }; ClassA.fun ...
- C++加速程序的全局执行函数
static int wing=[]() { std::ios::sync_with_stdio(false); cin.tie(NULL); ; }(); C++的cin和cout在输入输出时,会先 ...
- 7.计算N元等式[穷举]
穷举的一种应用,计算x+2y+3z=50的非负整数解.先约束每个变量的最大值,x=50,y=25,z=50/3. #include <iostream> using namespace s ...
- (线段树 区间查询)The Water Problem -- hdu -- 5443 (2015 ACM/ICPC Asia Regional Changchun Online)
链接: http://acm.hdu.edu.cn/showproblem.php?pid=5443 The Water Problem Time Limit: 1500/1000 MS (Java/ ...
- (最小生成树)Constructing Roads -- poj -- 2421
链接: http://poj.org/problem?id=2421 Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 2113 ...
- springmvc 孔浩
modelAttribute属性指定该form绑定的是哪个Model,当指定了对应的Model后就可以在form标签内部其 它表单标签上通过为path指定Model属性的名称来绑定Model中的数据了 ...