java – 设置byte []作为文件下载
发布时间:2020-12-15 02:35:15 所属栏目:Java 来源:网络整理
导读:我有一个生成Excel文件并输出为byte []的Jasper报告,我希望该文件在浏览器中显示为下载,但此刻它只是将原始代码打印到浏览器. 代码的相关部分如下所示,这是从AJAX请求启动的(页面已经加载): JasperReport jasperReport; JasperPrint jasperPrint; HttpServl
我有一个生成Excel文件并输出为byte []的Jasper报告,我希望该文件在浏览器中显示为下载,但此刻它只是将原始代码打印到浏览器.
代码的相关部分如下所示,这是从AJAX请求启动的(页面已经加载): JasperReport jasperReport; JasperPrint jasperPrint; HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse(); byte[] excel = null; FacesContext facesContext = FacesContext.getCurrentInstance(); try { ArrayList<SwimDataReport> dataList = getData(); if(dataList!=null){ JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(dataList,false); jasperReport = JasperCompileManager.compileReport(reportFile.getPath()); jasperPrint = JasperFillManager.fillReport(jasperReport,parameters,dataSource); JRXlsExporter exporter = new JRXlsExporter(); ByteArrayOutputStream xlsReport = new ByteArrayOutputStream(); exporter.setParameter(JRExporterParameter.JASPER_PRINT,jasperPrint); exporter.setParameter(JRExporterParameter.OUTPUT_STREAM,xlsReport); exporter.exportReport(); excel = xlsReport.toByteArray(); response.reset(); response.setContentType("application/vnd.ms-excel"); response.setHeader("Content-disposition","attachment; filename="Export.xls""); xlsReport.close(); OutputStream ouputStream = response.getOutputStream(); ouputStream.write(excel); ouputStream.close(); facesContext.responseComplete(); this.cleanUp(); }else{ return; } } catch (JRException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } 我出错的任何想法? 解决方法
看来您无法从AJAX请求下载文件,因此我使用了h:commandButton来触发下载.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |