使用Ajax和Flask下载Excel文件
用户按下页面上的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
。)
你真的需要使用Ajax? 我发现ajax是一个解决方案,用烧瓶下载excel文件...但它不适合我。 我只需在'rb'模式下打开excel文件,并将mimetype改为在Windows中被识别为excel文件。 你的Flast只需要调用getPlotExcel()。
@app.route("/getPlotExcel")
def getPlotExcel():
excelDownload = open("sample.xlsx",'rb').read()
return Response(
excelDownload,
mimetype="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
headers={"Content-disposition":
"attachment; filename=sample.xlsx"})
链接地址: http://www.djcxy.com/p/46845.html