フラスコのsend_file
方法を使用して、ブラウザに .txt ファイルをダウンロードさせようとしています。問題は、ブラウザが何もダウンロードしないことです。
ここに私のpython関数があります:
@app.route('/download_zip', methods=['POST'])
def download_zip():
file_name = 'test.txt'
return flask.send_file(file_name, as_attachment=True, mimetype='text/plain')
POST リクエストをトリガーする jQuery 関数は次のとおりです。
function batchDownload() {
$.post('/download_zip', {
file_name: 'temp.zip'
}).done(function(data) {
alert(data);
}).fail(function() {
alert('Error. Could not download files :(');
});
}
面白いことalert(data)
に、.done(...)
コールバックでは、ファイルの内容がブラウザに表示されます。したがって、ブラウザはファイルのコンテンツを受信していますが、ダウンロードしていません。
何か案は?
前もって感謝します!
編集
ページにフォームを追加しました:
<form id="download"></form>
そしてこれを.done(...)
コールバックに追加しました:
$form = $('#download');
$form.submit();
サーバーの応答によって返されたデータ (ファイル) を POST 要求にリンクする必要があると思いますか?