Flask 文件下载

原文: python - Flask Download a File - Stack Overflow

我们使用 Flask 的 send_file 方法来构建一个下载文件的视图函数,要完成下载我们首先要有被下载的文件和放置该类文件的路径。

我们在根目录新建一个 download 文件夹用于放置它们,为了方便调用我们还应当把该路径写进 Flask 的配置内。

# app.py

from flask import (
    Flask, 
    render_template, 
    send_file
)
import os

basedir = os.path.abspath(os.path.dirname(__file__))

app = Flask(__name__)
# 放置下载文件的路径
app.config['DOWNLOAD_FOLDER'] = os.path.join(basedir, 'download')


@app.route('/')
def index():
   return render_template('index.html')

@app.route('/download/<filename>')
def download_file (filename):
    folder = app.config['DOWNLOAD_FOLDER']
    # 构造供下载文件的完整路径
    path = os.path.join(folder, filename)
    return send_file(path, as_attachment=True)

然后我们在模板文件实现点击按钮即下载的功能,使用 url_for() 即可:

# index.html

<a href={{ url_for('download_file', filename='test.txt') }}>
  <button>download</button>
</a>

确保 download 文件夹内存在 test.txt 文件,点击按钮即可看到下载弹窗。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容