2017-01-24 6 views
1

Im Flaskで新しい。私は/ var /ディレクトリファイルのダウンロードリストを作成しようとしていますが、 私はこのリンクを作る方法を見つけることができません。 このディレクトリにファイルがあれば、tempfileはこの問題を解決できます。 ファイルが分からないので、フラスコディレクトリにファイルをコピーできません。 このようなファイルをダウンロードするにはどうすればいいですか?フラスコ内の別のディレクトリからファイルをダウンロード

+1

[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

+0

ありがとう。私はsend_fileを試してみましたが、動作させることはできませんが、あなたの提案の後に私はsend_from_directoryを使用しています。どうもありがとう – Rome

答えて

2

私はフラスコを使用したことはありませんが、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

関連する問題