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

Flask API如何通过Curl同时传递JSON文件与source、id参数?

正确的Curl命令与Flask数据读取实现

正确的Curl命令

你之前的Curl命令存在几个问题:-F参数的文件引用缺少@符号、使用了中文引号、请求地址未指定对应的Flask路由/json_test。修正后的命令如下:

curl -i -X POST -F "data=@/Users/test/testjson.json" -F "source=Value1" -F "ident=Value2" http://127.0.0.1:5000/json_test

注:无需手动指定Content-Type: multipart/form-data,curl会自动生成正确的multipart请求头。

对应的Flask代码实现

需要修改原有的Flask接口,适配multipart/form-data类型的请求,分别读取上传的JSON文件和表单参数:

from flask import Flask, request, json

app = Flask(__name__)

@app.route('/json_test', methods=['POST'])
def process_data():
    # 获取上传的JSON文件
    json_file = request.files.get('data')
    if not json_file:
        return "缺少JSON文件", 400
    
    # 读取并解析JSON内容
    try:
        data = json.load(json_file)
    except json.JSONDecodeError:
        return "JSON格式无效", 400
    
    # 获取source和ident参数
    source = request.form.get('source')
    ident = request.form.get('ident')
    
    # 此处添加你的业务逻辑,示例为打印接收的数据
    print("JSON数据:", data)
    print("Source参数:", source)
    print("Ident参数:", ident)
    
    return "数据接收成功", 200

if __name__ == '__main__':
    app.run(debug=True)

关键说明

  • 用request.files.get('data')获取上传的文件对象,对应Curl命令中data=的字段名;
  • 直接使用json.load(json_file)解析文件流,无需额外读取字节再转JSON;
  • 普通表单参数通过request.form.get()获取,对应Curl中source=和ident=的字段。

内容的提问来源于stack exchange,提问作者safar cafe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 15:30:55