jsp下载

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>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值