如何利用Ajax下载文件
Ajax下载无弹出框——原因:Ajax只能返回String类型的数据
一、当前做法:
利用ajax普通的异步请求下载的Controller,传送参数;
$.ajax({ type: 'POST',url: "downloadReports.do", data: [ { name: "fileIds",value: "135" } ] })
采用Response.write()的方法来下载文件,设置好如下的格式,
response.setContentType(
"application/octet-stream"
);
"application/OCTET-STREAM;charset=UTF-8"
response.setHeader(
"Content-Disposition"
,
"attachment;filename="
+fileName1);
然后将数据流写入Response:
但是结果是,没有弹出下载框,前段没有任何反应,通过查看ajax的返回数据,发现数据流发送到客户端。
二、原因分析:
Ajax异步请求的原因,需要改造ajax的下载请求,
JQuery的ajax函数的返回类型只有xml、text、json、html等类型,没有“流”类型,所以我们要实现ajax下载,不能够使用相应的ajax函数进行文件下载。但可以用js生成一个form,用这个form提交参数,并返回“流”类型的数据。在实现过程中,页面也没有进行刷新。
<script type="text/JavaScript"> var input1 = $('<input>'); } </script> ————以上代码直接实现为某个按钮的Click事件即可;(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |