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的Django框架中创建模板库的方法
Jul 20 Python
python 二分查找和快速排序实例详解
Oct 13 Python
基于python requests库中的代理实例讲解
May 07 Python
详解配置Django的Celery异步之路踩坑
Nov 25 Python
python中时间模块的基本使用教程
May 14 Python
解决python中使用PYQT时中文乱码问题
Jun 17 Python
Python高级编程之消息队列(Queue)与进程池(Pool)实例详解
Nov 01 Python
python实现简单图书管理系统
Nov 22 Python
python自动识别文本编码格式代码
Dec 26 Python
python批量修改文件名的示例
Sep 27 Python
如何用Python进行时间序列分解和预测
Mar 01 Python
python异步的ASGI与Fast Api实现
Jul 16 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
php提示undefined index的几种解决方法
2012/05/21 PHP
PHP在引号前面添加反斜杠(PHP去除反斜杠)
2013/09/28 PHP
Symfony2使用Doctrine进行数据库查询方法实例总结
2016/03/18 PHP
注意!PHP 7中不要做的10件事
2016/09/18 PHP
PHP实现Unicode编码相互转换的方法示例
2020/11/17 PHP
JavaScript学习笔记之获取当前目录的实现代码
2010/12/14 Javascript
jQuery 淡入淡出 png图在ie8下有黑色边框的解决方法
2013/03/05 Javascript
js操作label给label赋值及取label的值示例
2013/11/07 Javascript
php+js实现倒计时功能
2014/06/02 Javascript
javascript实现博客园页面右下角返回顶部按钮
2015/02/22 Javascript
js完美解决IE6不支持position:fixed的bug
2015/04/24 Javascript
jQuery事件绑定on()、bind()与delegate() 方法详解
2015/06/03 Javascript
深入探讨前端框架react
2015/12/09 Javascript
jQuery链式调用与show知识浅析
2016/05/11 Javascript
原生js实现返回顶部缓冲效果
2017/01/18 Javascript
jQuery插件HighCharts绘制2D带Label的折线图效果示例【附demo源码下载】
2017/03/08 Javascript
微信小程序下拉刷新界面的实现
2017/09/28 Javascript
vue bus全局事件中心简单Demo详解
2018/02/26 Javascript
VUE引入第三方js包及调用方法讲解
2019/03/01 Javascript
python基础之包的导入和__init__.py的介绍
2018/01/08 Python
Python实现获取本地及远程图片大小的方法示例
2018/07/21 Python
python实现动态创建类的方法分析
2019/06/25 Python
Python Django 命名空间模式的实现
2019/08/09 Python
python基于gevent实现并发下载器代码实例
2019/11/01 Python
分布式全文检索引擎ElasticSearch原理及使用实例
2020/11/14 Python
HTML5在a标签内放置块级元素示例代码
2013/08/23 HTML / CSS
"序列点" 是什么
2016/07/29 面试题
为什么Runtime.exec(“ls”)没有任何输出?
2014/10/03 面试题
党员教师工作决心书
2014/03/13 职场文书
2014年四风个人对照检查及整改措施
2014/10/28 职场文书
学生检讨书范文
2015/01/27 职场文书
电影圆明园观后感
2015/06/03 职场文书
二年级数学教学反思
2016/02/16 职场文书
MySQL中IF()、IFNULL()、NULLIF()、ISNULL()函数的使用详解
2021/06/26 MySQL
Python中文纠错的简单实现
2021/07/07 Python
CentOS7安装GlusterFS集群以及相关配置
2022/04/12 Servers