python实现requests发送/上传多个文件的示例


Posted in Python onJune 04, 2018

1、需要的环境

Python2.X
Requests 库

2、单字段发送单个文件

在requests中发送文件的接口只有一种,那就是使用requests.post的files参数, 请求形式如下:

url = "http://httpbin.org/post" 
data = None 
files = { ... } 
r = requests.post(url, data, files=files)

而这个files参数是可以接受很多种形式的数据,最基本的2种形式为:

字典类型

元组列表类型

2.1、字典类型的files参数

官方推荐使用的字典参数格式如下:

{ 
 "field1" : ("filename1", open("filePath1", "rb")), 
 "field2" : ("filename2", open("filePath2", "rb"), "image/jpeg"), 
 "field3" : ("filename3", open("filePath3", "rb"), "image/jpeg", {"refer" : "localhost"}) 
}

这个字典的key就是发送post请求时的字段名, 而字典的value则描述了准备发送的文件的信息;从上面可以看出value可以是2元组,3元组或4元组;

这个元组的每一个字段代表的意思一次为:

("filename", "fileobject", "content-type", "headers")

缺省的话则会使用默认值

除了上面的使用形式,其实requests还是支持一个更简洁的参数形式,如下

{ 
 "field1" : open("filePath1", "rb")), 
 "field2" : open("filePath2", "rb")), 
 "field3" : open("filePath3", "rb")) 
}

这种形式的参数其等同效果如下, 其中filename是filepath的文件名:

{ 
 "field1" : ("filename1", open("filePath1", "rb")), 
 "field2" : ("filename2", open("filePath2", "rb")), 
 "field3" : ("filename3", open("filePath3", "rb")) 
}

当然,你还可以这样发送一个文件请求

{ 
 "field1" : open("filePath1", "rb").read()) 
}

这里的filename的值为field1

2.2、元组列表类型的files参数

其实元组列表的形式与字典的形式基本一样,除了最外层的包装不一样;而在requests内部最终会把字典参数形式 转换 为 元组列的形式。官网推荐的用法如下:

[ 
 ("field1" : ("filename1", open("filePath1", "rb"))), 
 ["field2" : ("filename2", open("filePath2", "rb"), "image/jpeg")], 
 ("field3" : ("filename3", open("filePath3", "rb"), "image/jpeg", {"refer" : "localhost"})) 
]

列表里面的子项可以是元组,也可以是列表;同样这里也支持简介的形式,如下:

[ 
 ("field1" : open("filePath1", "rb"))), ##filename 使用的是filepath的文件名 
 ("field2" : open("filePath2", "rb").read())) ##filename 使用的是键值,即 field2 
]

3、单字段发送多个文件【即上传文件时,设置为多选了】

3.1、字典参数形式

{ 
 "field1" : [ 
   ("filename1", open("filePath1", "rb")), 
   ("filename2", open("filePath2", "rb"), "image/png"), 
   open("filePath3", "rb"), 
   open("filePath4", "rb").read() 
  ] 
}

3.2、元组列表形式

[ 
 ("field1" , ("filename1", open("filePath1", "rb"))), 
 ("field1" , ("filename2", open("filePath2", "rb"), "image/png")), 
 ("field1" , open("filePath3", "rb")), 
 ("field1" , open("filePath4", "rb").read()) 
]

上面2种形式发送的请求,所有的文件都会在同一个字段下,后台服务只要从field1字段就可以获取全部的文件对象

4、同时发送普通数据字段

上面介绍的是使用发送文件内容请求,而有时候我们在发送文件的同时还需要发送普通的数据字段,此时普通数据字段直接存在data参数中即可,如下:

data = {"k1" : "v1"} 
files = { 
 "field1" : open("1.png", "rb") 
} 
r = requests.post("http://httpbin.org/post", data, files=files)

以上这篇python实现requests发送/上传多个文件的示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现检测服务器是否可以ping通的2种方法
Jan 01 Python
Scrapy-redis爬虫分布式爬取的分析和实现
Feb 07 Python
python 读取excel文件生成sql文件实例详解
May 12 Python
Python 实现选择排序的算法步骤
Apr 22 Python
python使用RNN实现文本分类
May 24 Python
python实现自动网页截图并裁剪图片
Jul 30 Python
Python使用线程来接收串口数据的示例
Jul 02 Python
django的ORM操作 增加和查询
Jul 26 Python
python mqtt 客户端的实现代码实例
Sep 25 Python
Python图片处理模块PIL操作方法(pillow)
Apr 07 Python
OpenCV 表盘指针自动读数的示例代码
Apr 10 Python
浅谈matplotlib 绘制梯度下降求解过程
Jul 12 Python
python3写的简单本地文件上传服务器实例
Jun 04 #Python
Python装饰器的执行过程实例分析
Jun 04 #Python
使用Python监控文件内容变化代码实例
Jun 04 #Python
Python操作mongodb的9个步骤
Jun 04 #Python
Python中property函数用法实例分析
Jun 04 #Python
使用Python快速搭建HTTP服务和文件共享服务的实例讲解
Jun 04 #Python
python最长回文串算法
Jun 04 #Python
You might like
精通php的十大要点(上)
2009/02/04 PHP
Zend Framework教程之配置文件application.ini解析
2016/03/10 PHP
PHP实现的折半查找算法示例
2017/12/19 PHP
PHP设计模式之适配器模式原理与用法分析
2018/04/25 PHP
如何通过PHP实现Des加密算法代码实例
2020/05/09 PHP
PHP与Web页面的交互示例详解一
2020/08/04 PHP
使用TextRange获取输入框中光标的位置的代码
2007/03/08 Javascript
js post方式传递提交的实现代码
2010/05/31 Javascript
jQuery dialog 异步调用ashx,webservice数据的代码
2010/08/03 Javascript
再说AutoComplete自动补全之实现原理
2011/11/05 Javascript
使用focus方法让光标默认停留在INPUT框
2014/07/29 Javascript
JavaScript中使用指数方法Math.exp()的简介
2015/06/15 Javascript
Windows下用PyCharm和Visual Studio开始Python编程
2015/10/26 Javascript
JQuery插件Marquee.js实现无缝滚动效果
2016/04/26 Javascript
javascript实现鼠标点击页面 移动DIV
2016/12/02 Javascript
NodeJS创建最简单的HTTP服务器
2017/05/15 NodeJs
jquery 回调操作实例分析【回调成功与回调失败的情况】
2019/09/27 jQuery
详解使用mocha对webpack打包的项目进行"冒烟测试"的大致流程
2020/04/27 Javascript
Vue实现背景更换颜色操作
2020/07/17 Javascript
vue项目中播放rtmp视频文件流的方法
2020/09/17 Javascript
Python修改MP3文件的方法
2015/06/15 Python
Windows下将Python文件打包成.EXE可执行文件的方法
2018/08/03 Python
selenium+python 对输入框的输入处理方法
2018/10/11 Python
对Python 中矩阵或者数组相减的法则详解
2019/08/26 Python
python向图片里添加文字
2019/11/26 Python
python实现飞机大战游戏(pygame版)
2020/10/26 Python
纯CSS3实现自定义Tooltip边框涂鸦风格的教程
2014/11/05 HTML / CSS
input元素的url类型和email类型简介
2012/07/11 HTML / CSS
宝拉珍选澳大利亚官方购物网站:Paula’s Choice澳大利亚
2016/09/13 全球购物
prAna官网:瑜伽、旅行和冒险服装
2019/03/10 全球购物
三方合作协议书范本
2014/04/18 职场文书
车辆工程专业求职信
2014/06/14 职场文书
化学专业毕业生求职信
2014/07/28 职场文书
第二批党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
军人离婚协议书样本
2014/10/21 职场文书
宪法宣传标语100条
2019/10/15 职场文书