原文: 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
文件,点击按钮即可看到下载弹窗。
网友评论