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

Flask中如何正确提供与访问media媒体文件?flask-file-upload上传后访问404

问题修复方案

问题根因

你遇到的404问题主要由以下几个错误导致:

  • 未导入send_from_directory依赖,且路径拆分逻辑多余,导致实际查找的文件路径和真实路径不匹配
  • settings.py里定义的UPLOAD_FOLDER没有注册到Flask实例的配置中,app.config['UPLOAD_FOLDER']读取为空
  • as_attachment=True参数会强制触发文件下载,不符合前端img标签直接渲染图片的需求

修复步骤

1. 注册配置到Flask实例

在初始化Flask app的文件(通常是app/__init__.py)中加载配置:

from flask import Flask
from settings import *

app = Flask(__name__)
# 加载配置项
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER

2. 修正媒体路由代码

不需要手动拆分路径,send_from_directory本身支持识别包含子目录的完整相对路径:

# routes.py
from app import app
from flask import send_from_directory

@app.get('/media/<path:path>')
def send_media(path):
    """
    :param path: 相对路径,示例:posts/15/python.jpg
    """
    return send_from_directory(
        directory=app.config['UPLOAD_FOLDER'],
        path=path,
        as_attachment=False
    )

生产环境优化建议

线上部署时不要用Flask本身提供静态文件服务,性能极差,建议用Nginx直接代理/media路径指向你的media文件夹,示例配置:

location /media/ {
root /你的项目完整根目录路径;
expires 30d;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 04:36:00