Flask官方文件上传示例访问/uploads路由返回404问题
问题原因
你的404问题核心是硬编码的相对上传目录路径不可靠:
你写的UPLOAD_FOLDER = 'flask/uploads'是相对路径,解析时完全依赖你启动Flask服务时终端所在的工作目录。如果你是进入flask文件夹后执行python index.py启动服务,程序会去当前工作目录(也就是flask文件夹本身)下找flask/uploads子目录,这个路径实际不存在,send_from_directory找不到目标文件就会返回404。
修复步骤
替换硬编码的相对路径,用基于脚本位置的绝对路径,彻底避免工作目录变化导致的路径错误
修改index.py里的路径配置部分:import os from flask import Flask, request, redirect, url_for, flash from werkzeug.utils import secure_filename # 获取当前index.py文件所在的绝对目录 BASE_DIR = os.path.dirname(os.path.abspath(__file__)) # 拼接得到uploads文件夹的绝对路径 UPLOAD_FOLDER = os.path.join(BASE_DIR, 'uploads') ALLOWED_EXTENSIONS = {'txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif'} app = Flask(__name__) # flash功能需要密钥,补上避免运行报错 app.config['SECRET_KEY'] = 'your-custom-secret-key' app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER # 自动创建uploads文件夹,避免漏建文件夹导致的错误 os.makedirs(UPLOAD_FOLDER, exist_ok=True)其余业务逻辑代码不需要改动。
验证修复
- 停掉之前运行的Flask服务,重新启动
- 上传测试文件后,先打开本地的
flask/uploads目录,确认文件确实被保存到了这个目录下 - 再访问跳转后的
/uploads/文件名地址,就可以正常访问到上传的文件,不会再返回404。
注意:不要手动拼接路径字符串,全程用
os.path.join()处理路径,避免Windows、macOS/Linux系统路径分隔符不一样导致的兼容问题。
内容的提问来源于stack exchange,提问作者Zavalagrah
相关产品推荐
相关产品推荐

