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的urllib2模块处理url和图片的技巧两则
Feb 18 Python
Python实现图片转字符画的示例代码
Aug 21 Python
python生成随机图形验证码详解
Nov 08 Python
使用pandas把某一列的字符值转换为数字的实例
Jan 29 Python
Python os.access()用法实例
Feb 18 Python
Python两台电脑实现TCP通信的方法示例
May 06 Python
python 寻找离散序列极值点的方法
Jul 10 Python
python 日期排序的实例代码
Jul 11 Python
Python3如何对urllib和urllib2进行重构
Nov 25 Python
tensorflow 分类损失函数使用小记
Feb 18 Python
Django认证系统user对象实现过程解析
Mar 02 Python
浅谈Django QuerySet对象(模型.objects)的常用方法
Mar 28 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
PHP5在Apache下的两种模式的安装
2006/09/05 PHP
PHP中使用TCPDF生成PDF文档实例
2014/07/01 PHP
PHP图片裁剪与缩放示例(无损裁剪图片)
2017/02/08 PHP
Yii2下点击验证码的切换实例代码
2017/03/14 PHP
30分钟就入门的正则表达式基础教程
2013/02/25 Javascript
JavaScript地图拖动功能SpryMap的简单实现
2013/07/17 Javascript
提高NodeJS中SSL服务的性能
2014/07/15 NodeJs
Nodejs学习笔记之测试驱动
2015/04/16 NodeJs
jQuery 局部div刷新和全局刷新方法总结
2016/10/05 Javascript
Nodejs+angularjs结合multiparty实现多图片上传的示例代码
2017/09/29 NodeJs
AngualrJs清除定时器遇到的坑
2017/10/13 Javascript
vue服务端渲染添加缓存的方法
2018/09/18 Javascript
详解vue中async-await的使用误区
2018/12/05 Javascript
jQuery加PHP实现图片上传并提交的示例代码
2020/07/16 jQuery
记录一次websocket封装的过程
2020/11/23 Javascript
[00:12]2018DOTA2亚洲邀请赛SOLO赛 MidOne是否中单第一人?
2018/04/05 DOTA
wxPython框架类和面板类的使用实例
2014/09/28 Python
Python模块结构与布局操作方法实例分析
2017/07/24 Python
python利用lxml读写xml格式的文件
2017/08/10 Python
python和ruby,我选谁?
2017/09/13 Python
使用tensorflow实现AlexNet
2017/11/20 Python
详解pandas删除缺失数据(pd.dropna()方法)
2019/06/25 Python
简单了解django缓存方式及配置
2019/07/19 Python
Django Admin中增加导出Excel功能过程解析
2019/09/04 Python
pycharm无法安装第三方库的问题及解决方法以scrapy为例(图解)
2020/05/09 Python
利用python汇总统计多张Excel
2020/09/22 Python
CSS3过渡transition效果实例介绍
2016/05/03 HTML / CSS
简单聊聊H5的pushState与replaceState的用法
2018/04/03 HTML / CSS
中国首家奢侈品O2O网购平台:第五大道奢侈品网
2017/12/14 全球购物
安全生产月宣传标语
2014/10/06 职场文书
故意伤害人身损害赔偿协议书
2014/11/19 职场文书
高中16字霸气押韵班级口号集锦!
2019/06/27 职场文书
Java实现二维数组和稀疏数组之间的转换
2021/06/27 Java/Android
Netflix《海贼王》真人版剧集多张片场照曝光
2022/04/04 日漫
openEuler 搭建java开发环境的详细过程
2022/06/10 Servers
HTML实现仿Windows桌面主题特效的实现
2022/06/28 HTML / CSS