Html Flask将_文件作为附件发送不起作用

Html Flask将_文件作为附件发送不起作用,html,download,flask,Html,Download,Flask,我正在使用flask的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') 下面是触发P

我正在使用flask的
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 :(');
    });
}
有趣的是,
.done(…)
回调中的
警报(数据)
将文件内容显示到浏览器中。因此,浏览器接收文件内容,但不下载

有什么想法吗

提前谢谢


编辑

在页面中添加了一个表单:

并将其添加到
.done(…)
回调中:

    $form = $('#download');
    $form.submit();

我猜我需要以某种方式将服务器响应返回的数据(文件)链接到POST请求?

这不是一个与烧瓶相关的问题。 这就是浏览器和javascript的工作方式

您正在用Ajax下载文件,因此结果将传递给Ajax回调

您希望让浏览器以其通常的方式下载数据

为此,您必须使用
表单
并对其调用
.submit()
方法。
只需在带有隐藏字段的页面中创建
表单
,并在javascript函数中提交即可。它应该会起作用。

谢谢您的回复!我明白了,是的,这是我的网站项目,有很多东西需要学习:)我会尝试一下,然后再给你回复。好的,我添加了表单,并通过javascript函数提交它(请参见编辑)。如何将文件链接到表单?@nissemand no.您需要使用
..
而不是使用Ajax,您只需
.submit()
表单即可。这样,浏览器会直接执行
POST
,并触发您的下载。保罗,您是一位传奇人物!非常感谢:)