我有一个简单的 JSP 页面,其中包含 2 个按钮:查看和导出。单击查看按钮时,我将从数据库中获取数据,将副本保存到会话中,并将 HTML 代码写入带有数据的标签中。稍后当用户单击导出时,我想在服务器中生成一个 excel 文件(使用会话中的数据)并将其下载到客户端。
Excel 文件在服务器端成功创建。我正在使用来自客户端的 AJAX 请求从服务器下载 Excel 文件。
JSP代码:
try{
String filepath=ExportToExcel(session.getAttribute("InvestmentDetails"));
//Setting file to download
response.setContentType( "application/x-download");
response.setHeader("Content-Disposition","attachment; filename=\"SIPInvestment_531.xls\"");
response.setStatus(200);
InputStream in = null;
ServletOutputStream outs = response.getOutputStream();
try {
File filetodownload=new File(filepath);
response.setContentLength(Integer.parseInt(String.valueOf(filetodownload.length())));
in = new BufferedInputStream(new FileInputStream(filetodownload));
int ch;
while ((ch = in.read()) != -1) {
outs.print((char) ch);
}
}
finally {
if (in != null) in.close();
}
outs.flush();
outs.close();
}
catch(Exception ex){
str=ex.getMessage();
}
这是Javascript:
xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
}
}
xmlhttp.open("POST","/SIP/rptClientInvestmentDetails.jsp?requesttype=export",false);
xmlhttp.send();
请求到达 JSP 页面。并且无一例外地写入响应输出流。但是浏览器没有弹出下载。可能是什么问题?