前端js 后端python 如何用ajax下载文件?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前端js 后端python 如何用ajax下载文件?相关的知识,希望对你有一定的参考价值。

前端ajax 接受 后端python的数据流, 下载后不是文件, 是一串16进制的数字, 这个是哪里错了

后端 python 把json变成内存文件返回到前端
#form = cgi.FieldStorage()
#data = json.loads(str(form.getvalue("rptdata"))
data = json.loads('[["create_time", "BILL_SN"]]')
wb=openpyxl.Workbook()
ws=wb.active
for s in data:
ws.append(s)
output = BytesIO()
wb.save(output)
wb.close()
output.seek(0)
print("Content-Type: application/octet-stream")
print()
print(output.getvalue())

前端 js 通过 ajax 接受 blob并下载
$.ajax(
type:'post',
url:'/cgi-bin/rpt_data_toExcel.py',
async: true,
xhrFields:responseType: 'blob',
//data:'rptdata':tabledata,
success:function(result)
var blob=result;
var reader = new FileReader();
reader.readAsDataURL(blob);
reader.onload = function(e)
var a = document.createElement('a');
a.download = 'results.xls';
a.href = e.target.result;
$("body").append(a);
a.click();
$(a).remove();

)

参考技术A 前端js改成这样试试:
var form = $("<form></form>").attr("action", "/cgi-bin/rpt_data_toExcel.py").attr("method", "post");
form.append($("<input></input>").attr("type", "hidden").attr("name", "fileName").attr("value", "results.xls"));
form.appendTo('body').submit().remove();本回答被提问者采纳

如何用Tomcat部署前端静态文件

几种方法: 1、在myeclipse里部署 这个直接在myeclipse里配置好tomcat的根路径。 在server里可以看到tomcat,选择部署你的工程就行了。 2、把自己的web工程放在tomcat的webapps下 参考技术A 在项目开发的过程中,一些公司经常是前后台分开的,并不是所有的前端文件都在后台项目中,尤其是互联网公司。这时候就需要后端人员单独运行前端文件。怎么用Tomcat部署运行前端静态文件呢?

http://jingyan.baidu.com/article/ff41162593636412e5823752.html

以上是关于前端js 后端python 如何用ajax下载文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何用nginx发包

如何用ajax下载文件

如何用python开发移动App后台

JavaScript文件上传和下载

从前后端分离到GraphQL,携程如何用Node实现?

mock.js-无需等待,随机产生数据,让前端独立于后端进行开发