サービング私は、次のフラスコのアプリを持っている:バイナリファイル
@app.route('/')
def serve_index():
return render_template('index.html')
@app.route('/binary/')
def serve_binary():
file_name, file_path = generate_binary()
return send_file(file_path, attachment_filename = file_name, as_attachment=True)
私はlocalhost/
に行けば予想通り、私はindex.htmlをを取得します。
私がlocalhost/binary/
に行くと、私は期待通りにバイナリファイルを取得します。
(generate_binary()
は、私が書いたバイナリを生成するPythonスクリプトで、Flaskがアクセスできるフォルダに格納し、ファイル名とファイルへのパスを返します)。
ここで、私がlocalhost/binary/
にアクセスすると、取得したバイナリをダウンロードできるindex.htmlへのリンクを書きたいと思います。次のように
私のindex.htmlに見えます:私はlocalhost/
を訪問し、Link to binary
リンクをクリックした場合
<!DOCTYPE html>
<html>
<body>
<a href="localhost/binary/" target="blank">Link to binary</a>
</body>
</html>
はしかし、私はlocalhost/binary/
に着くが、バイナリファイルを取得するために、このページをリロードする必要があります。
私が望むのは、index.html
ページを離れずにファイルを取得することだけです。
'localhost/binary'はまだ完全なURLではなく相対パスです。おそらく 'http:// localhost/binary'を使用するのですか?デフォルトのポート80に移動します。 –
ブラウザに新しいウィンドウを開くように指示しています( 'target =" blank "'のスペルが間違っています。毎回同じウィンドウを再利用します。おそらく '_blank ')。ファイルをダウンロードするために実際に行うべきではありません。 –
'http:// localhost/binary'を使い、' target = "_ blank"を削除すると、そのトリックが実行されました。ありがとうございました! – Pingu