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

使用Flask接收POST请求并将请求内容写入TXT文件

Flask接收POST请求并写入TXT文件的实现方案

你看到的405错误是因为默认的Flask路由只支持GET请求,先给路由加上methods=['POST']来允许POST方法。下面分几种常见的POST数据传递场景,给出完整的实现代码:

1. 提取URL查询参数(对应你日志里的/?c51d94c2efccaa2092ad1028285549)

如果请求把数据放在URL的查询参数里,可以用request.args来获取:

from flask import Flask, request
import datetime

app = Flask(__name__)

@app.route('/', methods=['POST'])
def receive_post():
    # 获取单个查询参数(替换成你实际的参数名)
    param_value = request.args.get('c51d94c2efccaa2092ad1028285549')
    # 或者获取所有查询参数转成字典
    all_params = request.args.to_dict()
    
    # 写入TXT文件(追加模式,避免覆盖旧数据)
    with open('received_data.txt', 'a', encoding='utf-8') as f:
        f.write(f"[{datetime.datetime.now()}] URL参数: {all_params}\n")
    
    return '数据已接收', 200

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

2. 提取表单格式的POST数据

如果发送方用表单(application/x-www-form-urlencoded)格式传数据:

from flask import Flask, request
import datetime

app = Flask(__name__)

@app.route('/', methods=['POST'])
def receive_post():
    # 获取单个表单字段
    target_field = request.form.get('your_field_name')
    # 获取所有表单字段
    all_form_data = request.form.to_dict()
    
    # 写入TXT
    with open('received_data.txt', 'a', encoding='utf-8') as f:
        f.write(f"[{datetime.datetime.now()}] 表单数据: {all_form_data}\n")
    
    return '数据已接收', 200

3. 提取JSON格式的POST数据(脚本间通信优先推荐)

如果发送方用JSON格式(application/json)传数据,这是脚本间通信最规范的方式:

from flask import Flask, request
import datetime

app = Flask(__name__)

@app.route('/', methods=['POST'])
def receive_post():
    # 获取JSON数据,返回字典格式
    json_data = request.get_json()
    if not json_data:
        return '未检测到有效JSON数据', 400
    
    # 写入TXT
    with open('received_data.txt', 'a', encoding='utf-8') as f:
        f.write(f"[{datetime.datetime.now()}] JSON数据: {json_data}\n")
    
    return '数据已接收', 200

if __name__ == '__main__':
    # 生产环境建议用gunicorn/uwsgi部署,这里用自带服务器方便测试
    app.run(host='0.0.0.0', port=5000)

关键注意事项

  • 用'a'模式打开文件是追加写入,若要每次覆盖旧数据可改用'w'模式
  • 24小时稳定运行的话,不要用Flask自带的app.run(),生产环境推荐用gunicorn部署,比如命令:gunicorn -w 4 -b 0.0.0.0:5000 app:app
  • 导入datetime是为了记录数据接收时间,便于后续排查问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 07:40:23