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

Flask无法打开本地文件夹问题排查及功能验证咨询

问题原因及解决方案

为什么通过Flask访问本地文件夹失败?

这是浏览器的同源安全策略限制导致的:

  • 直接打开home.html时,页面使用file://本地文件协议,浏览器允许该协议访问本地文件系统;
  • 通过Flask服务器访问时,页面使用http://(或https://)协议,浏览器出于安全考虑,禁止HTTP页面直接调用file://协议的资源,防止恶意网站窃取本地文件。

解决方法:通过Flask代理访问本地文件夹

不能直接用<a href="F:/">这类链接,需要让Flask作为中间层读取本地目录内容,再返回给前端。修改代码如下:

1. 更新app.py

添加读取本地目录的路由:

from flask import Flask, render_template, send_from_directory
import os

app = Flask(__name__)
# 定义要访问的本地文件夹路径
LOCAL_FOLDER = "F:/"

@app.route('/helloworld')
def helloworld():
    return 'Hello, world!', 200

@app.route("/home")
def home():
    # 获取目录下的文件/文件夹列表
    items = os.listdir(LOCAL_FOLDER)
    return render_template('home.html', items=items)

@app.route('/files/<path:filename>')
def serve_file(filename):
    # 提供文件访问(若需支持文件夹遍历,可进一步扩展逻辑)
    return send_from_directory(LOCAL_FOLDER, filename, as_attachment=True)

2. 更新home.html

动态渲染目录列表:

<h3>本地F盘内容</h3>
<ul>
    {% for item in items %}
    <li>
        <a href="{{ url_for('serve_file', filename=item) }}">{{ item }}</a>
    </li>
    {% endfor %}
</ul>

如何验证Flask是否正常工作?

  • 测试基础路由:启动Flask服务后,在浏览器访问http://localhost:5000/helloworld,如果页面显示Hello, world!,说明Flask服务正常启动且路由配置有效;
  • 测试模板渲染:访问http://localhost:5000/home,如果能正常加载页面(即使无文件列表,只要不出现404/500报错),说明模板渲染功能正常;
  • 查看控制台日志:启动Flask时的控制台若无报错信息,且访问路由时显示GET /home 200这类请求日志,说明服务运行正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 03:55:11