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

Tornado服务端使用get_body_argument无法获取form-data上传文件内容如何解决

问题根源

从你输出的请求体可以看到,你上传的第一个表单字段的name属性为dev1\n,比你调用get_body_argument时传入的参数名dev1多了一个换行符,Tornado匹配表单参数名时要求严格相等,自然无法找到对应的返回值。
另外你用了multipart/form-data传文件,get_body_argument方法本身只用于获取普通文本类型的表单字段,上传的文件默认会被解析到self.request.files属性中,不会被get_body_argument识别。

解决步骤

  • 第一步:修正Postman的表单配置,检查dev1字段名,删除末尾多余的换行/空白字符,确保字段名完全为dev1
  • 第二步:使用正确的Tornado文件读取方法,示例代码如下:
# 取dev1对应的第一个上传文件对象
dev1_file = self.request.files.get("dev1", [None])[0]
if dev1_file:
    # 读取文件内容并解码为字符串
    test1_content = dev1_file["body"].decode("utf-8")
    # 此处即可获得你要的test1.txt内容:xxxxx\nyyyyy
    print(test1_content)
  • 如果你不需要走文件上传的逻辑,只是要传文本内容,可以在Postman中将dev1字段的类型从File改为Text,直接填写内容,此时即可直接通过get_body_argument("dev1")获取对应值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 03:54:10