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

Flask接收FormData时无法获取timestamp参数问题排查

解决Flask无法获取FormData中附加参数的问题

你遇到的这个问题其实是对Flask中请求参数获取方式的误解导致的,咱们一步一步来解决:

核心问题:参数获取方式错了

你后端用request.args.get('timestamp')去拿参数,但request.args是用来获取URL查询参数的(比如http://xxx?timestamp=123里的timestamp),而你通过FormData.append()添加的参数是放在请求体的表单数据里的,应该用request.form来获取。

修改你的Flask后端代码:

@app.route('/receivedoc', methods=['POST', 'GET', 'OPTIONS'])
@crossdomain(origin='*')
def upload_file():
    if request.method == 'POST':
        print(request.files)
        # 用request.form.get获取FormData里的附加参数,加默认值避免None拼接报错
        timestamp = request.form.get('timestamp', '')
        print(f"Timestamp: {timestamp}")
        # 针对你更新后的t_stamp123参数,这样获取
        # t_stamp = request.form.get('t_stamp123', '')
        # print(f"t_stamp123: {t_stamp}")
        
        if 'file' not in request.files:
            flash('No file part')
            return redirect(request.url)
        file = request.files['file']
        # 后续处理文件逻辑

关于前端console.log(formData)显示为空的疑问

这是正常现象,FormData是一个不可枚举的对象,直接console.log()只能看到空的对象结构,想要查看里面的内容,需要遍历它的entries:

var formData = new FormData();
formData.append('file', file);
formData.append('t_stamp123', 'test123');

// 遍历查看FormData内容
for (let [key, value] of formData.entries()) {
    console.log(`${key}:`, value);
}

这样就能看到你添加的file和t_stamp123参数了,也能确认参数确实被正确添加到FormData里。

验证修改效果

现在再测试的话,后端应该能正常获取到timestamp/t_stamp123参数,同时文件上传也不会受影响——因为文件是存在request.files里,和request.form是分开存储的,互不干扰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:20:15