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

Flask无法接收表单请求:Content-Type相关错误求助

问题排查与解决方案

问题根源

你遇到的问题是因为新版本Flask-RESTful的reqparse默认参数解析位置从表单(form)改成了JSON(json),导致后端期望接收JSON格式数据,但你发送的是表单编码数据,两者不匹配;而强行设置JSON头后,你发送的还是表单格式数据,自然无法被解析。

解决方法

方法一:修改后端参数解析配置(推荐)

确保你的ParseArgs在定义参数时指定从表单获取数据,给每个add_argument加上location='form'参数:

from flask_restful import reqparse

# 重新定义ParseArgs
ParseArgs = reqparse.RequestParser()
# 明确指定从表单中读取参数
ParseArgs.add_argument('FileName', location='form')
ParseArgs.add_argument('Mode', location='form')

# 原GetFiles类保持不变
api.add_resource(GetFiles, '/Files')
class GetFiles(Resource): 
    def post(self): 
        args = ParseArgs.parse_args()
        if '.txt' not in args['FileName']:
            FileName = f'{args["FileName"]}.txt'
        else: 
            FileName = args['FileName']
        # 后续处理逻辑...

方法二:修改前端请求为JSON格式

如果不想调整后端,可以把请求数据转为JSON格式发送,同时设置正确的请求头:

import json
import requests

r = requests.post(
    'http://x.x.x.x/Files',
    data=json.dumps({'FileName': filename, 'Mode': 'Add'}),
    headers={'Content-Type': 'application/json'}
)

额外验证步骤

  • 检查Docker容器中安装的Flask-RESTful版本,对比之前的环境版本,确认是否是版本更新导致的默认行为变更。
  • 测试时可以用Postman发送表单请求,验证后端修改后的解析是否正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 03:22:51