python 使用poster模块进行http方式的文件传输到服务器的方法


Posted in Python onJanuary 15, 2019

这几天帮内部人员做一个文件传输的小工具,要用http的方式,在用django搭建了个小框架之后,如何进行传输,特别是大文件的传输,成为主要问题。经过查资料,最后选择了通过poster这个模块来进行文件的传输,方式如下:

from poster.encode import multipart_encode
from poster.streaminghttp import register_openers
import urllib2
def upload_file(url,upload_file_path,filename):
 register_openers()
 datagen, headers = multipart_encode({"file": open(upload_file_path, "rb"),"type":"uploadFile","filename":filename})
 request = urllib2.Request(url, datagen, headers)
 return urllib2.urlopen(request).read()

poster的用法可以参考官方文件:点击打开链接

其中,url为服务器的接收url,upload_file_path 为文件的绝对路径,filename是文件名称,当然这里我只是贴了上传文件的代码,认证方式可以根据自己的需要进行补充。这个代码放在客户端上,当接收到服务端要上传的文件时,将文件上传给服务端。

服务端在接收到这个文件流时,文件数据会保存在request的FILE信息中,可以通过这样的方式进行接收:

with open(full_path,'wb+') as f:
 for chunk in request.FILES.get('file').chunks():
 f.write(chunk)

full_path为保存的路径。

以上这篇python 使用poster模块进行http方式的文件传输到服务器的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python单链表实现代码实例
Nov 21 Python
用Python遍历C盘dll文件的方法
May 06 Python
Python正则表达式知识汇总
Sep 22 Python
Python SMTP发送邮件遇到的一些问题及解决办法
Oct 24 Python
深入了解Python枚举类型的相关知识
Jul 09 Python
python判断自身是否正在运行的方法
Aug 08 Python
Python学习笔记之错误和异常及访问错误消息详解
Aug 08 Python
Python 3 使用Pillow生成漂亮的分形树图片
Dec 24 Python
基于python+selenium的二次封装的实现
Jan 06 Python
Python3.7将普通图片(png)转换为SVG图片格式(网站logo图标)动起来
Apr 21 Python
Python+OpenCV图像处理——图像二值化的实现
Oct 24 Python
Python绘制地图神器folium的新人入门指南
May 23 Python
Python3中lambda表达式与函数式编程讲解
Jan 14 #Python
Jupyter notebook在mac:linux上的配置和远程访问的方法
Jan 14 #Python
使用CodeMirror实现Python3在线编辑器的示例代码
Jan 14 #Python
python 根据时间来生成唯一的字符串方法
Jan 14 #Python
python ipset管理 增删白名单的方法
Jan 14 #Python
python 监听salt job状态,并任务数据推送到redis中的方法
Jan 14 #Python
在python 不同时区之间的差值与转换方法
Jan 14 #Python
You might like
桌面中心(四)数据显示
2006/10/09 PHP
PHP新手上路(十四)
2006/10/09 PHP
php基于双向循环队列实现历史记录的前进后退等功能
2015/08/08 PHP
ubuntu下配置nginx+php+mysql详解
2015/09/10 PHP
thinkPHP中create方法与令牌验证实例浅析
2015/12/08 PHP
PHP-FPM运行状态的实时查看及监控详解
2016/11/18 PHP
浅谈PHP中如何实现Hook机制
2017/11/14 PHP
可兼容php5与php7的cURL文件上传功能实例分析
2018/05/11 PHP
ThinkPHP5框架中使用JWT的方法示例
2020/06/03 PHP
jquery 实现的全选和反选
2009/04/15 Javascript
firefox下frameset取不到值的解决方法
2010/09/06 Javascript
javascript数组去掉重复
2011/05/12 Javascript
js如何获取file控件的完整路径具体实现代码
2013/05/15 Javascript
框架页面高度自动刷新的Javascript脚本
2013/11/01 Javascript
JavaScript判断数字是否为质数的方法汇总
2016/06/02 Javascript
BOM系列第二篇之定时器requestAnimationFrame
2016/08/17 Javascript
Bootstrap 响应式实用工具实例详解
2017/03/29 Javascript
ES6 Promise对象概念与用法分析
2017/04/01 Javascript
Vue声明式渲染详解
2017/05/17 Javascript
vue前后分离调起微信支付
2019/07/29 Javascript
vue按需加载实例详解
2019/09/06 Javascript
Vue 如何使用props、emit实现自定义双向绑定的实现
2020/06/05 Javascript
vue 解决在微信内置浏览器中调用支付宝支付的情况
2020/11/09 Javascript
python控制台英汉汉英电子词典
2020/04/23 Python
Pyhthon中使用compileall模块编译源文件为pyc文件
2015/04/28 Python
python re模块findall()函数实例解析
2018/01/19 Python
Python基于辗转相除法求解最大公约数的方法示例
2018/04/04 Python
基于多进程中APScheduler重复运行的解决方法
2019/07/22 Python
纯css3实现的动画按钮的实例教程
2014/11/17 HTML / CSS
巧用HTML5给按钮背景设计不同的动画简单实例
2016/08/09 HTML / CSS
C语言笔试集
2012/07/24 面试题
人力资源总监工作说明
2014/03/03 职场文书
法制宣传标语
2014/06/23 职场文书
离婚财产处理协议书
2014/09/30 职场文书
优质护理服务心得体会
2016/01/22 职场文书
vue-cli3.0修改打包后的文件名和文件地址,打包后本地运行报错解决
2022/04/06 Vue.js