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

远程服务器Flask应用文件通过浏览器链接下载方法咨询

简便实现Flask应用文件下载的方案

嘿,你不用折腾FTP啦,直接用Flask本身就能轻松搞定文件下载的需求——之前的HTTP链接无效,是因为Flask默认只会暴露static和templates目录下的内容,你的cleaned_files不在默认允许的路径里,所以直接访问找不到。下面给你两种最简便的方法:

方法一:单个文件下载路由(最常用)

直接在你的app.py里添加一个专门处理下载的路由,用Flask内置的send_from_directory函数就能搞定:

  1. 先导入必要的模块:
from flask import Flask, send_from_directory
import os
  1. 添加下载路由:
app = Flask(__name__)

# 处理文件下载的路由
@app.route('/download/<filename>')
def download_file(filename):
    # 获取当前app.py所在的项目根目录
    project_root = os.path.dirname(__file__)
    # 拼接cleaned_files的完整路径
    file_directory = os.path.join(project_root, 'cleaned_files')
    # as_attachment=True 让浏览器触发下载动作,而不是直接打开文件
    return send_from_directory(file_directory, filename, as_attachment=True)

# 你的其他Flask路由和业务逻辑...

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8991)  # 注意host设为0.0.0.0才能让远程用户访问

配置完成后,启动Flask应用,用户就能通过这个链接下载文件了:
http://linuxserver:8991/download/generated_file.xlsx

方法二:允许浏览整个文件目录(可选)

如果需要让用户能浏览cleaned_files里的所有文件并自主选择下载,可以扩展上面的路由,添加目录列表功能:

import os
from flask import Flask, send_from_directory, render_template_string

app = Flask(__name__)

# 目录浏览+文件下载路由
@app.route('/files/')
@app.route('/files/<filename>')
def browse_files(filename=None):
    project_root = os.path.dirname(__file__)
    file_directory = os.path.join(project_root, 'cleaned_files')
    
    if filename is None:
        # 列出目录下的所有文件
        files = os.listdir(file_directory)
        # 生成简单的HTML列表模板
        html = """
        <h1>可用下载文件</h1>
        <ul>
            {% for file in files %}
            <li><a href="/files/{{ file }}">{{ file }}</a></li>
            {% endfor %}
        </ul>
        """
        return render_template_string(html, files=files)
    else:
        # 处理单个文件下载
        return send_from_directory(file_directory, filename, as_attachment=True)

启动后用户访问http://linuxserver:8991/files/就能看到所有文件,点击对应链接即可下载。

注意事项

  • 确保Flask运行的进程对cleaned_files目录和里面的文件有读取权限,不然会返回403或500错误。
  • 如果是生产环境部署Flask(比如用Gunicorn+Nginx),建议把静态文件下载交给Nginx处理,但开发阶段用上面的方法完全够用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:46:46