我正在使用烧瓶的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 请求?