老男孩 python学习自修第二十二天【文件上传与下载】
1.使用socket实现文件上传
server.py
#!/usr/bin/env python
# _*_ coding:UTF-8 _*_
import os
import SocketServer
class MyServer(SocketServer.BaseRequestHandler):
def handle(self):
base_path = "/Users/liudaoqiang/"
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 = True
while Flag:
if int(file_size) > recv_size:
data = conn.recv(1024)
recv_size += len(data)
else:
recv_size = 0
Flag = False
f.write(data)
print "upload success"
f.close()
instance = SocketServer.ThreadingTCPServer(("127.0.0.1", 9999), MyServer)
instance.serve_forever()
client.py
# !/usr/bin/env python
# _*_ coding:UTF-8 _*_
import socket
import os
if __name__ == "__main__":
client = socket.socket()
ip_port = ("127.0.0.1", 9999)
client.connect(ip_port)
while True:
input = raw_input(">>>>")
cmd, path = input.split("|")
file_name = os.path.basename(path)
file_size = os.stat(path).st_size
client.send(cmd + "|" + file_name + "|" + str(file_size))
send_size = 0
f = file(path, "rb")
Flag = True
while Flag:
if send_size + 1024 > file_size:
data = f.read((file_size - send_size))
Flag = False
else:
data = f.read(1024)
send_size += 1024
f.close()
client.close()
老男孩 python学习自修第二十二天【文件上传与下载】的更多相关文章
- (转载)JavaWeb学习总结(五十)——文件上传和下载
源地址:http://www.cnblogs.com/xdp-gacl/p/4200090.html 在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传 ...
- JavaWeb学习总结(五十)——文件上传和下载
在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用 ...
- JavaWeb学习 (二十八)————文件上传和下载
在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用 ...
- Struts2学习(六)———— 文件上传和下载
一.单文件上传 在没学struts2之前,我们要写文件上传,非常麻烦,需要手动一步步去获取表单中的各种属性,然后在进行相应的处理,而在struts2中就不需要了,因为有一个fileUpload拦截器帮 ...
- 学习Struts--Chap07:Struts2文件上传和下载
1.struts2文件上传 1.1.struts2文件上传的基本概述 在开发web应用的时候,我们一般会为用户提供文件上传的功能,比如用户上传一张图像作为头像等.为了能上传文件,我们必须将表单的met ...
- 老男孩python学习自修第二十四天【多进程】
1. 体验多进程的运行速度 #!/usr/bin/env python # _*_ coding:UTF-8 _*_ from multiprocessing import Pool import t ...
- 老男孩python学习自修第二十三天【多线程】
1. 线程的创建与运行 #!/usr/bin/env python # _*_ coding:UTF-8 _*_ from threading import Thread def foo(param1 ...
- 老男孩python学习自修第十二天【常用模块之生成随机数】
常用函数 import random random.random() 生成0到1之间的小数 random.randint(begin, end) 生成[begin, end]之间的整数 random. ...
- 基于jsp的文件上传和下载
参考: 一.JavaWeb学习总结(五十)--文件上传和下载 此文极好,不过有几点要注意: 1.直接按照作者的代码极有可能listfile.jsp文件中 <%@taglib prefix=&qu ...
随机推荐
- Python:Day04
数学运算符: + 加 - 减 * 乘 ** 指数运算 / 除 // 整除 % 取余 比较运算符: > 大于 < 小于 >= 大于等于 <= 小于等于 == ...
- [LeetCode]最大系列(最大正方形221,最大加号标志764)
221. 最大正方形 题目描述: 在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积. 示例: 输入: 1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 ...
- Linux Driver 开发 eclipse工程找不到头文件
如下添加头文件路径, 右键单击工程,选择 Properties > C/C++ Build > Settings > > GCC C/C++ Compiler ...
- Caused by: java.sql.SQLException: Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp
错误信息如下: Caused by: java.sql.SQLException: Value '0000-00-00 00:00:00' can not be represented as java ...
- argparse模块
argparse模块是的编写用户友好的命令行接口非常容易.程序只需定义好它要求的参数,然后argparse将负责如何从sys.argv中解析出这些参数.argparse模块还会自动生成帮助和使用信息并 ...
- Servlet简单概念和开发小总结
一.Servlet概念 安装了tomcat了解到其实tomcat是一个容器,可以处理用户发送的请求(Request),之后会为请求做出一个响应(Response),此时用户只能请求一些现成的资源,容器 ...
- RestFul风格API(Swagger)--从零开始Swagger
引言:随着技术的革新,现在的系统基本上都是前后端分离,并且在各自的道路上越走越远,而前后端之间通信或者联系的桥梁就是API,而这里基于RESTful风格的API框架就来了!欲知后事如何,客官别急,往下 ...
- 环境部署(九):linux下安装python+chrome+Xvfb
在基于selenium进行的UI自动化测试中,开发调试环境一般都是windows操作系统.完成后需要部署到专门的测试环境. 如要要部署到linux环境的服务器(阿里云.腾讯云)执行,那么测试脚本也需要 ...
- phpstorm 免费激活码
打开网址 http://idea.lanyus.com/ 选择获取注册码,复制生成的验证码 安装完成后,打开软件,依次选择菜单栏 Help -> Register-> Activation ...
- 01-认识Jenkins
1.1 Jenkins是什么? Jenkins官网: http://jenkins.io/ .Jenkins前身是Hudson,使用java语言开发的自动化发布工具.在中大型金融等企业中普遍使用Jen ...