You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python的requests库实现multipart/mixed API多文件上传

使用Python requests库实现多文件上传的Multipart POST请求

requests库对multipart类型的请求有原生支持,直接通过files参数就能同时上传多个不同类型的文件,无需手动处理边界符。以下是针对你提供的API的实现方案:

核心实现思路

构造files字典,每个键对应API中表单字段的name属性,值为一个元组,包含(文件名, 文件内容/文件对象, Content-Type)三个元素。

代码示例

情况1:CSV为本地文件,JSON内容直接构造

import requests
import json

# 构造JSON参数内容
default_values = {
    "defaultApplications": ["45aa62ac003841fb8fb5b3b21cdf7f86", "45aa62ac003841fb8fb5b3b21cdf7f87"],
    "offerId": "25aa92ac003841fb8fb5b3b21cdf7f17"
}

# 请求地址
url = "https://na.abc.net/api/v1/operations/systems/register"

# 构造files参数
with open("file.csv", "rb") as csv_file:
    files = {
        # CSV文件:name为"file",指定文件名和Content-Type
        "file": ("file.csv", csv_file, "text/csv"),
        # JSON内容:name为"defaultValues",将字典转为字符串,指定文件名和Content-Type
        "defaultValues": ("defaultValues.json", json.dumps(default_values), "application/json")
    }
    # 发送POST请求
    response = requests.post(url, files=files)

# 处理响应
if response.status_code == 200:
    print("请求成功,响应结果:")
    print(response.json())
else:
    print(f"请求失败,状态码:{response.status_code}")
    print("响应内容:", response.text)

情况2:CSV和JSON均为本地文件

如果你的JSON内容也是本地文件,只需将对应部分替换为文件对象即可:

import requests

url = "https://na.abc.net/api/v1/operations/systems/register"

with open("file.csv", "rb") as csv_file, open("defaultValues.json", "rb") as json_file:
    files = {
        "file": ("file.csv", csv_file, "text/csv"),
        "defaultValues": ("defaultValues.json", json_file, "application/json")
    }
    response = requests.post(url, files=files)

# 处理响应逻辑同上

注意事项

  • 文件打开必须使用rb(二进制读取)模式,避免编码问题
  • 使用with语句管理文件对象,会自动关闭文件,避免资源泄漏
  • 如果API需要额外的请求头或认证信息,可以在requests.post中添加headers或auth参数

内容的提问来源于stack exchange,提问作者Ruturaj Mane

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 05:08:21