利用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)