使用curl向Flask API上传文件内容时遇BadRequestKeyError问题
解决Flask API文件上传的BadRequestKeyError问题
你的问题出在服务器端获取数据的方式错误:当使用curl -F命令上传文件时,Flask会将文件数据存入request.files对象,而非request.form(后者仅用于普通表单字段,不包含文件)。
修正后的服务器端代码
from flask import request @app.route('/api_tst01/', methods=['POST']) def api_tst01(): # 从request.files中获取上传的文件 input_file = request.files.get('input_txt') if input_file: # 读取文件内容(XML为文本格式,需解码为字符串) xml_content = input_file.read().decode('utf-8') print(xml_content) return "文件内容接收成功", 200 # 处理未上传文件的情况 return "未检测到上传的文件", 400
关键说明
- 使用
request.files.get('input_txt')替代request.form["input_txt"],这是获取上传文件的正确方式 - 增加文件存在性检查,避免空指针错误
- 通过
.read().decode('utf-8')将二进制文件内容转换为可读的字符串(适配XML文本格式) - 返回明确的HTTP状态码和响应信息,方便调试
你的curl命令是正确的,无需修改:
curl -X POST -i -F 'input_txt=@single_file.txt' http://myhost:5000/api_tst01/
内容的提问来源于stack exchange,提问作者Don Levey
相关产品推荐
相关产品推荐

