javascript调用 jsp下载
step1:js 调用
//导出后回调函数--》调用现在
function callBackFunction_exportExcel(jsonData){
eval("var jsonData = "+jsonData);
//调用下载
var fileNameAndType = encodeURIComponent(jsonData.fileName);
alert("fileNameAndType-->"+fileNameAndType);
var outPutWholeFolder = encodeURIComponent(jsonData.fileWoleForder);
alert("outPutWholeFolder-->"+outPutWholeFolder);
window.open ('<%=path%>/module/system/standard/download.jsp?outPutWholeFolder='+outPutWholeFolder+'&fileNameAndType='+fileNameAndType);
}
step2:download.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@page import="java.net.URLEncoder"%>
<%@page import="java.io.FileInputStream"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
// window.onload = function(){
// window.top.close();
// }
</script>
</head>
<body>
<%
String fileWholeUrl = "D://output.bmp";
fileWholeUrl = request.getParameter("outPutWholeFolder");
//关于文件下载时采用文件流输出的方式处理:
//加上response.reset(),并且所有的%>后面不要换行,包括最后一个;
response.reset();//可以加也可以不加
response.setContentType("application/x-download");
//response.setContentType("application/force-download");//设置为下载
//application.getRealPath("/main/mvplayer/CapSetup.msi");获取的物理路径
String filedownload = "要提供下载的文件的物理路径+文件名";
//String filedisplay = "给用户提供的下载文件名.bmp";
String filedisplay = request.getParameter("fileNameAndType");
filedisplay = URLEncoder.encode(filedisplay,"UTF-8");
response.addHeader("Content-Disposition","attachment;filename=" + filedisplay);
//
java.io.OutputStream outp = null;
java.io.FileInputStream in = null;
try {
outp = response.getOutputStream();
in = new FileInputStream(fileWholeUrl);
//
byte[] b = new byte[1024];
int i = 0;
while((i = in.read(b)) > 0) {
outp.write(b, 0, i);
}
//
outp.flush();
//要加以下两句话,否则会报错
//java.lang.IllegalStateException: getOutputStream() has already been called for //this response
out.clear();
out = pageContext.pushBody();
} catch(Exception e) {
System.out.println("Error!");
e.printStackTrace();
} finally {
if(in != null) {
in.close();
in = null;
}
// //这里不能关闭
// if(outp != null) {
// outp.close();
// outp = null;
// }
}
%>
</body>
</html>