📜  Flask 下载文件 (1)

📅  最后修改于: 2023-12-03 14:41:13.509000             🧑  作者: Mango

Flask 下载文件

在 Flask 中,可以通过 send_file() 函数实现文件下载。本文将介绍如何在 Flask 中实现文件下载功能。

准备工作

为了方便演示,我们先创建一个包含文件下载功能的 Flask 应用。在应用根目录下创建一个 download 目录,并在其中添加一个任意文件,以 example.txt 为例。

import os
from flask import Flask, send_file

app = Flask(__name__)

@app.route('/download/<filename>')
def download(filename):
    filepath = os.path.join(os.getcwd(), 'download', filename)
    return send_file(filepath, as_attachment=True)

if __name__ == '__main__':
    app.run()

在应用中,我们将 /download/<filename> 路由映射到 download() 函数中。当用户访问 /download/example.txt 时,应用会读取文件并返回给用户。

文件下载

现在我们启动应用,访问 /download/example.txt,应用会自动下载文件并将其保存至本地。

如果需要更改下载文件的文件名,可以在 send_file() 函数中设置参数 attachment_filename,如下所示:

@app.route('/download/<filename>')
def download(filename):
    filepath = os.path.join(os.getcwd(), 'download', filename)
    return send_file(filepath, attachment_filename='new_name.txt', as_attachment=True)
注意事项
  1. send_file() 函数的 as_attachment 参数设置为 True,表示下载的文件会作为附件进行下载。
  2. 在 Windows 系统下,通过 Flask 的方式下载文件可能会受到浏览器的防护机制的影响,需要将下载文件放入服务器的静态目录并通过 <a> 标签来访问,或者通过特殊处理跳过浏览器的防护机制。