如果需要发送文件到服务器,比如上传图片、视频等,就需要发送二进制数据。
一般上传文件使用的都是 Content-Type: multipart/form-data; 数据类型,可以发送文件,也可以发送相关的消息体数据。
1 url = 'http://httpbin.org/post' # 上传文件接口
2 files = {
3 'file': ('test.png', # 文件名称
4 open('../file/test.png', 'rb'), # 文件路径
5 'image/png', # 文件类型
6 {'Expires': '0'} # 其他参数,非必传
7 )
8 } # => 打开上传文件并且加入文件相关参数
9
10 data = {
11 "name": "test"
12 }
13
14 # data传入请求参数dict,files传入待上传文件参数dict
15 r = requests.post(url, data=data, files=files)
16 print(r.json())
files字典里的 'file' 键是根据上传组件的name属性来改变的,不一定是file;
如下图上传组件,当你上传一张图片时,抓包可以发现会传两个值,一个是fileField,一个是type,所以你的文件数据dict要包含 fileField 和 type 两个key
1 files = {
2 'fileField': ('test.png', # 文件名称
3 open('../file/test.png', 'rb'), # 文件路径
4 'image/png', # 文件类型
5 {'Expires': '0'} # 其他参数,非必传
6 ),
7 'type': 1
8 } # => 打开上传文件并且加入文件相关参数
最后:下面是配套学习资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!
被百万人刷爆的软件测试题库!!!谁用谁知道!!!全网最全面试刷题小程序,手机就可以刷题,地铁上公交上,卷起来!
涵盖以下这些面试题板块:
1、软件测试基础理论 ,2、web,app,接口功能测试 ,3、网络 ,4、数据库 ,5、linux
6、web,app,接口自动化 ,7、性能测试 ,8、编程基础,9、hr面试题 ,10、开放性测试题,11、安全测试,12、计算机基础