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

Flask实现视频上传播放时出现werkzeug路由构建错误如何解决

Flask视频上传播放报错排查与解决方案

报错根因

你遇到的werkzeug.routing.BuildError报错,核心原因是错误使用了url_for方法:url_for的第一个参数必须是Flask注册的视图函数名称,而非本地文件系统路径,你在display_video视图中传入了本地路径/home/ubuntu/project_rehearsal/flask2/,Flask无法找到对应路由端点,因此抛出错误。

具体问题修复

1. 修复display_video视图逻辑

该视图的作用是返回上传的视频文件,无需渲染模板或跳转,需要先导入Flask的send_from_directory方法,再修改视图代码:

# 顶部导入新增send_from_directory
from flask import Flask,render_template,request,redirect,flash,url_for,send_from_directory

# 修改后的display_video视图
@app.route('/uploads/<filename>')
def display_video(filename):
    return send_from_directory(app.config['VIDEO_UPLOADS'], filename)

2. 修复allowed_videos方法的语法与逻辑错误

原方法存在缩进错误、方法调用漏括号、返回值逻辑错误三个问题,修复后代码如下:

def allowed_videos(filename):
    if not "." in filename:
        return False
    ext = filename.rsplit(".",1)[1]
    # upper是方法需要加括号调用,匹配成功返回True,失败返回False
    return ext.upper() == app.config['ALLOWED_VIDEOS_EXTENSIONS']

3. 基础环境检查

  • 确保上传目录/home/ubuntu/project_rehearsal/flask2/uploads/存在,且Flask进程对该目录有读写权限
  • 确认上传的视频为MP4格式,大小不超过16MB的限制

测试验证

修改完成后重启Flask服务,重新上传视频即可正常播放。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 16:27:02