使用requests发送form-data数据(content_type:‘multipart/form-data’)
请求同时携带 ”数据“ + “文件”(支持多文件上传)
import requests
import json
# JSON 数据
json_data = {
# ... JSON 数据 ...
}
# 文件路径
file_path1 = 'path_to_your_first_file.xlsx' # 替换为实际文件路径
file_path2 = 'path_to_your_second_file.xlsx' # 替换为实际文件路径
file_path3 = 'path_to_your_third_file.xlsx' # 替换为实际文件路径
file_path4 = 'path_to_your_fourth_file.xlsx' # 替换为实际文件路径
# 准备请求数据 key为你自己的key,并不是固定的,自己定义
"""
核心代码:
1:如果传普通参数,则按照 (str(key1), (None, json.dumps(json_data))) 组装
2:如果要上传文件,则按照 (str(key1), (file_name, open(file_path1, 'rb'))) 组装
可以将数据与文件都放到同一个list中。
请注意key1时可以自己随便定义的,可以相同也可以不同
# 坑点,不要出现字符串、byte以外的数据,比如int等都需要转str / byte类型,不然会报错
TypeError: expected string or bytes-like object
"""
files= [
(str(key1), (None, json.dumps(json_data))),
(str(key1), (None, 'value'),
(str(key1), (file_name, open(file_path1, 'rb'))),
(str(key1), (file_name, open(file_path1, 'rb'))),
(str(key1), (file_name, open(file_path1, 'rb'))),
]
# 目标URL
url = 'your_target_url'
# 发送POST请求
# 如果一定传headers,请记住headers中一定不要加content_type='multipart/form-data'
response = requests.post(url, files=files)
# 输出响应内容
print(response.text)
# 关闭所有打开的文件
for key, value in data.items():
if key == 'key': # 自己改一下条件,把文件筛选处理,给关掉就好了
for file_tuple in value:
if file_tuple and hasattr(file_tuple[0], 'close'):
file_tuple[0].close()
【文章编写不易,如需转发请联系作者!】