Python requests post上传文件
1、前言
利用requests库的POST方法,可以上传图片、视频、Excel等文件。注意请求头中设置Content-Type: multipart/form-data。
2、实践
2.1、抓包分析
通过Fiddler抓包获取到WebForms如下图所示,除了最后一项的Value为file类型,其它均为字符串类型。通过阅读其它文章并实验,得出结论:将file和除file之外的其它数据分别构造成myfiles和mydata字典,分别传到requests.post方法的files和data关键字参数。
2.2、构造files请求参数
如上述结论,首先构造myfiles字典。该字典的key为最后一项name所对应的’file’,value为通过 open 函数以二进制方式打开文件,如下所示。
myfiles = {
'file': open('绝对地址', 'rb')
}
2.3、构造data请求参数
还是如上述结论,mydata为除file之外的其它Web表单中的键值对,key依旧是各个name。
mydata = {
'orgId': 'xxx',
'roleIds': 'xxx',
'userGroupIds': 'xxx',
'invalidTime': 'xxx',
}
2.4、发送请求
res = requests.post(url, headers=myheaders, data=mydata, files=myfiles)