利用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实现简单的文件上传相关推荐

  1. 简述php中文件上传过程,简单php文件上传详细说明

    关于文件上传我们讲了很多,这只是一款最基本的简单的文件上传功能,同时本教程也介绍了关于上传的原理以及各种函数的使用与file的参数说明,以及php.ihi设置上传文件大小配置等. 1  如果实现小文件 ...

  2. 使用jspsmartupload完成简单的文件上传系统

    请不要妄想,一个html的file控件,再加上JavaScript与jQuery语句就可以完成文件上传, 文件上传系统从来是需要配合服务器来完成的 用户把自己的文件上传到服务器上 文件上传系统是很复杂 ...

  3. 项目Tips---使用阿里的OOS实现简单的文件上传

    简介 在还没有工作时,我们做项目时一般使用的Tomcat服务器作为文件上传和下载的存储点.可是作为上线项目这是行不通,所以为了解决海量数据存储与弹性扩容,阿里云给我们提供了一个OOS的对象存储平台. ...

  4. 树莓派3B+采用花生棒进行内网穿透,从拆箱到实现SSH远程控制与sftp简单远程文件上传下载

    树莓派3B+采用花生棒进行内网穿透,使用sftp实现远程控制与简单远程文件上传下载) 准备步骤 物理环境搭建 关于基础配置的博文推荐 树莓派联网配置 基础联网 配置静态ip 花生壳内网穿透 常用远程端 ...

  5. ASP.NET MVC实现简单的文件上传与下载

    使用ASP.NET MVC实现简单的文件上传与下载. 1.上传文件HTML <form action='@Url.Action("Upload", "File&qu ...

  6. python scoket、SocketServer简单实现文件上传下载

    2019独角兽企业重金招聘Python工程师标准>>> 1.描述 实现任何位置文件下载到客户端执行的当前目录下 实现任何位置文件上传到服务端执行的当前目录下服务端: #!/usr/b ...

  7. 简单总结文件上传漏洞

    写在前面: 无图言diao系列:: 排版样式我看着还行 能看完大概会有用: 代码基本能直接用(大概: 有错误恳请指出欢迎发邮件与我交流: 参考了网上已有的博客,侵删: 0x00 文件上传漏洞概述 用户 ...

  8. 实现一个简单的文件上传进度条

    新手入门web 文件上传完成 取得的进展 没有进度条只能用文字 不好看  必须是一个进度条  没有艺术 互联网很 进度条 需要图片 有多种帧的 他看上去好麻烦 让自己的单纯 很简单 我没想到这么复杂 ...

  9. cocos2dx 实现简单的文件上传到php服务器的demo

    最近刚写完一个cocos2dx,从客户端上传到php服务器的简单测试程序,代码可以复制直接运行 在阅读代码前最好可以先花点时间了解一点php 和libcurl的相关知识,并不会花费太长时间,由于我做的 ...

最新文章

  1. java做个简单的登录界面_java一个简单的登录界面制作
  2. MySQL删除环境变量配置
  3. win10改计算机用户名,win10系统修改本地账号用户名的操作方法
  4. 创业者谈:畏惧失败,但也要拥抱失败
  5. Linux 底层原理 —— epoll 与多路复用
  6. linux 终端与shell输出大小不匹配
  7. 如何需求分析和编写测试用例
  8. jQery动态添加删除类样式
  9. java 二叉树的创建 遍历
  10. vscode编辑器 mac 版 中文编译报错_记录一下mac上用vscode写latex文档
  11. 成也英雄,败也英雄—Sun前CEO Scott Mc- Nealy
  12. golang gin解决跨域:编写一个全局中间件
  13. python之sqlalchemy的使用
  14. android 备忘录 知乎,实用的语音转文字软件,知乎大佬力荐!会议纪要好帮手
  15. 14届数独-真题标准数独-Day 3-20220118
  16. 201671030118 词频统计软件项目报告
  17. SQLFeatureNotSupportedException: isValid
  18. 向量转置的怎么求导_向量求导
  19. 基于JSP学生学籍管理系统
  20. photoshop 安装和使用 蓝湖上传设计图

热门文章

  1. Python:if语句
  2. gentoo实体机安装显卡驱动和解决多媒体播放问题
  3. my questions of C#
  4. linux基础知识总结(四)
  5. 陈年牵手徐静蕾之一箭双雕
  6. VS2005(C#)里读取及改变App.config里appSettings节的值
  7. 博客开通了,开卷有益,纪念一下
  8. Starter Kit for ASP.NET 2.0 家族又添新丁!
  9. EXPLAIN字段详解
  10. Dubbo(五)Dubbo 简单监控平台(monitor)搭建