【发布时间】:2014-12-08 02:16:47
【问题描述】:
用户按下页面上 form 中包含的按钮:
<form id="form">
<input type="button" id="export" value="Export"/>
</form>
单击按钮后,将进行以下 Ajax 调用:
ajaxCall('/export', {}, callback_export, 'get');
在哪里
function ajaxCall(url, params, callback, type) {
if (validate()) {
var request;
request = $.ajax({
url: url,
type: type,
data: params
});
}
request.done(function (response, textStatus, jqXHR){
callback(response);
});
}
Flask 应用如下所示:
@app.route('/export')
def export():
xl_file= '/absolute/path/to/excel/file.xlsx'
return send_file(xl_file, as_attachment=True, mimetype='application/vnd.ms-excel')
文件的文件内容被返回给浏览器(见下图),而不是文件本身作为附件。
问题是,回调需要是什么样子才能接受作为文件附件的响应?否则,需要进行哪些修改?
(是的,我已经搜索并阅读了 SE 上的许多帖子。大多数讨论使用 form.submit() 方法,但不提供详细信息。我希望避免使用 form.submit(),因为其中还有其他元素#form 不能提交。)
【问题讨论】:
-
不确定this 帖子是否有帮助。尝试在您的回复中添加标题
header('Content-Disposition: attachment; filename="name_of_excel_file.xls"'); -
谢谢我看到那个帖子。在
send_file方法中使用as_attachment=True和mimetype='application/vnd.ms-excel效果是一样的(我觉得)。
标签: javascript python ajax flask