gpt4 book ai didi

html - Flask send_file 作为附件不起作用

转载 作者:搜寻专家 更新时间:2023-10-31 22:14:15 29 4
gpt4 key购买 nike

我正在使用 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 :(');
});
}

有趣的是 alert(data).done(...)回调向浏览器显示文件的内容。所以浏览器正在接收文件内容,但只是不下载它。

有什么想法吗?

提前致谢!


编辑

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

<form id="download"></form>

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

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

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

最佳答案

这不是 flask 相关的问题。这就是浏览器和 javascript 的工作方式。

您正在使用 Ajax 下载文件,因此结果会传递给您的 Ajax 回调。

你想让浏览器以他通常的方式下载数据。

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

关于html - Flask send_file 作为附件不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18263339/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com