从Flask中的另一个目录下载文件

时间:2017-01-24 13:53:45

标签: python linux flask sendfile

我是新的烧瓶。我尝试制作/ var /目录文件的下载列表但是 我找不到任何方法来建立这个链接。 任何文件都可以在此目录中,因此tempfile可以解决此问题。 我不知道该文件,因此我无法复制flask目录中的文件, 任何人都可以告诉我如何为这样的文件制作下载链接?

1 个答案:

答案 0 :(得分:3)

我从未使用过烧瓶,但对Django有一些经验。 从快速查看烧瓶文档(rendering_templates),您必须将上下文变量传递给渲染函数,然后将其添加到jinja模板。

我还建议指定一个不同的文件夹来下载,因为让用户访问你的/ var /文件夹会引起安全问题。

见下文:

import os

from flask import Flask, render_template

app = Flask(__name__)

dloads_dir = '/var/www/mysite/downloads/'
dloads = os.listdir(dloads_dir).sort()
dloads_src = ['/downloads/{}'.format(i) for i in dloads]

@app.route('/Downloads')
def list_downloads():

    return render_template('downloads.html', dloads=dloads, dloads_src=dloads_src)

然后在html(我应该说Jinja2)模板中:

<!doctype html>
<title>Hello from Flask</title>
{% for file in dloads %}
    <a href="{{ dloads_src[loop.index0] }}" download>{{ file }}</a>
{% endfor %}
</html>

Here's where I found the loop.index method

(1)编辑:修复了我的错误HTML