前言:
最近在测试一个文件上传的接口功能,初始设计如下:
# coding=utf8 import requests from uuid import uuid4 import os import sys import urllib from requests_toolbelt import MultipartEncoder url="https://192.168.26.24/system.m?a=rpc-data-import" cookie = {"WAFFSSID":"v2flm3bj8ait2ef2cescrmgl93"} header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:82.0) Gecko/20100101 Firefox/82.0'} file_name = "F:/waf/webApi/file/waf_alarms_export.gz" # 获取文件后缀名 suffix = file_name.split(".")[1] # 获取文件名称 name = os.path.basename(file_name) print(name) # 获取boundary boundary_vale = uuid4().hex boundary = "-----------------------------{0}".format(boundary_vale) file_tup = (name, open(file_name, 'rb'), 'application/zip') m = MultipartEncoder( fields={'name': name, 'zipfile': file_tup} ) header["Content-Type"] = m.content_type requests.packages.urllib3.disable_warnings() response = requests.post(url=url,headers=header,cookies=cookie,data=m,verify=False) print(response.text) with open("index.html","w") as f: f.write(response.text)
运行该脚本,通过filder抓包内容如下:
而正确的结果应该是:
代码改正如下:
在此运行成功上传文件请求。