js实现文件下载
前台代码:
function exportReport(){var url = "后台处理方法地址"; download(url); } function download(url){ Ext.Msg.wait("正在下载数据,请稍等。。。"); if (!Ext.fly('downForm')){ //如果不存在一个id为"downForm"的form表单,则执行下面的操作 //下面代码是在创建一个表单以及添加相应的一些属性 var downForm = document.createElement('form'); //创建一个form表单 downForm .id = 'downForm'; //该表单的id为downForm downForm .name = 'downForm'; //该表单的name属性为downForm downForm .className = 'x-hidden'; //该表单为隐藏的 downForm .action = url; downForm .method = 'post'; //表单的提交方法 document.body.appendChild(downForm ); //讲form表单追加到body里面 } Ext.fly('downForm').dom.submit(); //调用form表单的submit方法,提交表单,从而开始下载文件 //如果存在id为downForm的表单,则将它移除掉 if (Ext.fly('downForm')){ document.body.removeChild(downForm ); } Ext.Msg.hide(); }
后台代码:
@RequestMapping(value="/exportExcel",method = {RequestMethod.POST,RequestMethod.GET},produces = "text/html; charset=UTF-8") public static void exportExcel(HttpServletRequest request, HttpServletResponse response) { response.addHeader("Content-Disposition", "attachment;filename=exportInfo.xlsx"); response.setContentType("application/octet-stream");try { //获取需要下载的文件
File output = null;
InputStream in = new FileInputStream(output); // 获取下载文件的输入流
int count = 0;
byte[] by = new byte[1024];
// 通过response对象获取OutputStream流
OutputStream out = response.getOutputStream();
while ((count = in.read(by)) != -1) {
out.write(by, 0, count);// 将缓冲区的数据输出到浏览器
}
in.close();
out.flush();
out.close();
} catch (Exception e) { e.printStackTrace(); } }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战