1
Im New In Flask。我正在嘗試下載/ var /目錄文件的下載列表,但我找不到任何方法來創建此鏈接。 任何文件都可以在這個目錄下,所以tempfile可以解決這個問題。 我不知道該文件,所以我不能複製燒瓶目錄中的文件, 任何人都可以告訴我如何使這樣的文件下載鏈接?從Flask的另一個目錄中下載文件
Im New In Flask。我正在嘗試下載/ var /目錄文件的下載列表,但我找不到任何方法來創建此鏈接。 任何文件都可以在這個目錄下,所以tempfile可以解決這個問題。 我不知道該文件,所以我不能複製燒瓶目錄中的文件, 任何人都可以告訴我如何使這樣的文件下載鏈接?從Flask的另一個目錄中下載文件
我從來沒有使用燒瓶,但有一些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
看看[send_file()](http://flask.pocoo.org/docs/0.12/api/#flask.send_file)和[send_from_directory()](http:// flas k.pocoo.org/docs/0.12/api/#flask.send_from_directory) – MrLeeh
非常感謝。我嘗試send_file,但我不能讓它工作,但在你的建議後,我使用send_from_directory,這工作正如我想。非常感謝 – Rome