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实现Windows电脑定时关机
Jun 20 Python
Python3连接SQLServer、Oracle、MySql的方法
Jun 28 Python
NLTK 3.2.4 环境搭建教程
Sep 19 Python
Python openpyxl 遍历所有sheet 查找特定字符串的方法
Dec 10 Python
django 自定义过滤器的实现
Feb 26 Python
详解Python正则表达式re模块
Mar 19 Python
django框架使用方法详解
Jul 18 Python
Pandas 重塑(stack)和轴向旋转(pivot)的实现
Jul 22 Python
django做form表单的数据验证过程详解
Jul 26 Python
使用Python脚本zabbix自定义key监控oracle连接状态
Aug 28 Python
基于python实现简单C/S模式代码实例
Sep 14 Python
Python如何使用循环结构和分支结构
Apr 13 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框架排名
2013/07/04 PHP
PHP获取php,mysql,apche的版本信息示例代码
2014/01/16 PHP
关于php支持分块与断点续传文件下载功能代码
2014/05/09 PHP
php写入、删除与复制文件的方法
2015/06/20 PHP
PHP安全下载文件的方法
2016/04/07 PHP
使用PHP开发留言板功能
2019/11/19 PHP
取得一定长度的内容,处理中文
2006/12/20 Javascript
小议JavaScript中Generator和Iterator的使用
2015/07/29 Javascript
深入浅析JavaScript函数前面的加号和叹号
2016/07/09 Javascript
nodejs实例解析(输出hello world)
2017/01/03 NodeJs
vue-cli 如何打包上线的方法示例
2018/05/08 Javascript
vue实现element-ui对话框可拖拽功能
2018/08/17 Javascript
微信小程序动画组件使用解析,类似vue,且更强大
2019/08/01 Javascript
谈谈JavaScript令人迷惑的==与+
2020/08/31 Javascript
微信小程序入门之绘制时钟
2020/10/22 Javascript
详解如何在vue+element-ui的项目中封装dialog组件
2020/12/11 Vue.js
python使用PyGame绘制图像并保存为图片文件的方法
2015/04/24 Python
Python实现将一个大文件按段落分隔为多个小文件的简单操作方法
2017/04/17 Python
python实现发送邮件功能代码
2017/12/14 Python
python线程中同步锁详解
2018/04/27 Python
Centos下实现安装Python3.6和Python2共存
2018/08/15 Python
python调用百度REST API实现语音识别
2018/08/30 Python
python发送告警邮件脚本
2018/09/17 Python
Python3 Tkinter选择路径功能的实现方法
2019/06/14 Python
Django框架之DRF 基于mixins来封装的视图详解
2019/07/23 Python
python 函数嵌套及多函数共同运行知识点讲解
2020/03/03 Python
python和pywin32实现窗口查找、遍历和点击的示例代码
2020/04/01 Python
Python如何安装第三方模块
2020/05/28 Python
Python爬虫实现HTTP网络请求多种实现方式
2020/06/19 Python
Python爬虫中Selenium实现文件上传
2020/12/04 Python
最新大学毕业求职简历的自我评价
2013/10/18 职场文书
生产管理的三大手法
2013/11/11 职场文书
车辆工程专业求职信
2014/06/14 职场文书
共青团员自我评价范文
2014/09/14 职场文书
高二学年自我鉴定范文(2篇)
2014/09/26 职场文书
Redis基本数据类型哈希Hash常用操作命令
2022/06/01 Redis