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

3、参考

经验分享 程序员 微信小程序 职场和发展