利用Socketserver实现简单的文件上传
利用Socketserver实现简单的文件上传
server.py
#!/usr/bin/env python
#coding:utf-8
import SocketServer
import os
class MyServer(SocketServer.BaseRequestHandler):def handle(self):base_path = 'C:/temp'conn = self.request print 'connected...'while True:pre_data = conn.recv(1024) #获取请求方法、文件名、文件大小cmd,file_name,file_size = pre_data.split('|') #已经接收文件的大小recv_size = 0#上传文件路径拼接file_dir = os.path.join(base_path,file_name)f = file(file_dir,'wb')Flag = Truewhile Flag: #未上传完毕,if int(file_size)>recv_size: #最多接收1024,可能接收的小于1024data = conn.recv(1024)recv_size+=len(data) #上传完毕,则退出循环else:recv_size = 0Flag = Falsecontinue#写入文件f.write(data) print 'upload successed.'f.close()
if __name__ == '__main__':instance = SocketServer.ThreadingTCPServer(('127.0.0.1',9999),MyServer)instance.serve_forever()
client.py
#!/usr/bin/env python
# coding:utf-8
__author__ = 'aolens'
import socket
import sys
import osip_port = ('127.0.0.1',9999)
s = socket.socket()
s.connect(ip_port)container = {'key':'','data':''}
while True:input = raw_input('path:')cmd,path = input.split('|')file_name = os.path.basename(path)file_size=os.stat(path).st_sizes.send(cmd+"|"+file_name+'|'+str(file_size))send_size = 0f= file(path,'rb')Flag = Truewhile Flag: if send_size + 1024 >file_size:data = f.read(file_size-send_size)Flag = Falseelse:data = f.read(1024)send_size+=1024s.send(data)f.close()s.close()
客户端输出path的格式为:方法|路径
path:PUT|C:/oem8.log
查看上传文件路径
C:/temp
下,发现有了一个oem8.log
文件,上传成功
转载于:https://blog.51cto.com/aolens/1846438
利用Socketserver实现简单的文件上传相关推荐
- 简述php中文件上传过程,简单php文件上传详细说明
关于文件上传我们讲了很多,这只是一款最基本的简单的文件上传功能,同时本教程也介绍了关于上传的原理以及各种函数的使用与file的参数说明,以及php.ihi设置上传文件大小配置等. 1 如果实现小文件 ...
- 使用jspsmartupload完成简单的文件上传系统
请不要妄想,一个html的file控件,再加上JavaScript与jQuery语句就可以完成文件上传, 文件上传系统从来是需要配合服务器来完成的 用户把自己的文件上传到服务器上 文件上传系统是很复杂 ...
- 项目Tips---使用阿里的OOS实现简单的文件上传
简介 在还没有工作时,我们做项目时一般使用的Tomcat服务器作为文件上传和下载的存储点.可是作为上线项目这是行不通,所以为了解决海量数据存储与弹性扩容,阿里云给我们提供了一个OOS的对象存储平台. ...
- 树莓派3B+采用花生棒进行内网穿透,从拆箱到实现SSH远程控制与sftp简单远程文件上传下载
树莓派3B+采用花生棒进行内网穿透,使用sftp实现远程控制与简单远程文件上传下载) 准备步骤 物理环境搭建 关于基础配置的博文推荐 树莓派联网配置 基础联网 配置静态ip 花生壳内网穿透 常用远程端 ...
- ASP.NET MVC实现简单的文件上传与下载
使用ASP.NET MVC实现简单的文件上传与下载. 1.上传文件HTML <form action='@Url.Action("Upload", "File&qu ...
- python scoket、SocketServer简单实现文件上传下载
2019独角兽企业重金招聘Python工程师标准>>> 1.描述 实现任何位置文件下载到客户端执行的当前目录下 实现任何位置文件上传到服务端执行的当前目录下服务端: #!/usr/b ...
- 简单总结文件上传漏洞
写在前面: 无图言diao系列:: 排版样式我看着还行 能看完大概会有用: 代码基本能直接用(大概: 有错误恳请指出欢迎发邮件与我交流: 参考了网上已有的博客,侵删: 0x00 文件上传漏洞概述 用户 ...
- 实现一个简单的文件上传进度条
新手入门web 文件上传完成 取得的进展 没有进度条只能用文字 不好看 必须是一个进度条 没有艺术 互联网很 进度条 需要图片 有多种帧的 他看上去好麻烦 让自己的单纯 很简单 我没想到这么复杂 ...
- cocos2dx 实现简单的文件上传到php服务器的demo
最近刚写完一个cocos2dx,从客户端上传到php服务器的简单测试程序,代码可以复制直接运行 在阅读代码前最好可以先花点时间了解一点php 和libcurl的相关知识,并不会花费太长时间,由于我做的 ...
最新文章
- java做个简单的登录界面_java一个简单的登录界面制作
- MySQL删除环境变量配置
- win10改计算机用户名,win10系统修改本地账号用户名的操作方法
- 创业者谈:畏惧失败,但也要拥抱失败
- Linux 底层原理 —— epoll 与多路复用
- linux 终端与shell输出大小不匹配
- 如何需求分析和编写测试用例
- jQery动态添加删除类样式
- java 二叉树的创建 遍历
- vscode编辑器 mac 版 中文编译报错_记录一下mac上用vscode写latex文档
- 成也英雄,败也英雄—Sun前CEO Scott Mc- Nealy
- golang gin解决跨域:编写一个全局中间件
- python之sqlalchemy的使用
- android 备忘录 知乎,实用的语音转文字软件,知乎大佬力荐!会议纪要好帮手
- 14届数独-真题标准数独-Day 3-20220118
- 201671030118 词频统计软件项目报告
- SQLFeatureNotSupportedException: isValid
- 向量转置的怎么求导_向量求导
- 基于JSP学生学籍管理系统
- photoshop 安装和使用 蓝湖上传设计图