后台代码:
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class DownloadServlet extends HttpServlet
{
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("UTF-8");
java.io.BufferedInputStream bis = null;
java.io.BufferedOutputStream bos = null;
String ctxPath = request.getSession().getServletContext().getRealPath("/");
System.out.println(ctxPath);
String downLoadPath = "c:/checkoute8cdata/test220.csv";
System.out.println(downLoadPath);
try {
long fileLength = new File(downLoadPath).length();
response.setContentType("application/x-msdownload;");
response.setHeader("Content-disposition", "attachment; filename="
+ new String("test".getBytes("utf-8"), "ISO8859-1"));
response.setHeader("Content-Length", String.valueOf(fileLength));
bis = new BufferedInputStream(new FileInputStream(downLoadPath));
bos = new BufferedOutputStream(response.getOutputStream());
byte[] buff = new byte[2048];
int bytesRead;
while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
bos.write(buff, 0, bytesRead);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (bis != null)
bis.close();
if (bos != null)
bos.close();
}
}
}
前台代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Panel</title>
<script type="text/javascript" src="scripts/jquery-1.4.4.js"></script>
<script type="text/javascript">
$(document).ready(function(){
document.getElementById("panel").onclick=function(){
$.ajax({
type: "get",
url: "DownloadServlet"
});
}
})
</script>
</head>
<body>
<div id="panel">download</div>
<%--<a href="DownloadServlet">download</a>
--%></body>
</html>
8 个解决方案
#1
数据返回了,你怎么处理的。
#2
既然用jquery 为什么要document.getElementById("panel").onclick=
改成 $("#panel").click(function(){});
firebug 测试下..
改成 $("#panel").click(function(){});
firebug 测试下..
#3
数据我没有处理,我只是要实现下载的功能,而ajax返回的数据给我输到浏览器了,而不是弹出下载对话框
#4
数据我没有处理,我只是要实现下载的功能,而ajax返回的数据给我输到浏览器了,而不是弹出下载对话框
#5
问题不能解决
#6
post 呢
#7
post也不行啊。
#8
要 用个架包的 而且request 也不是HttpServletRequest了,要一个文件上传,下载的架包就好了
#1
数据返回了,你怎么处理的。
#2
既然用jquery 为什么要document.getElementById("panel").onclick=
改成 $("#panel").click(function(){});
firebug 测试下..
改成 $("#panel").click(function(){});
firebug 测试下..
#3
数据我没有处理,我只是要实现下载的功能,而ajax返回的数据给我输到浏览器了,而不是弹出下载对话框
#4
数据我没有处理,我只是要实现下载的功能,而ajax返回的数据给我输到浏览器了,而不是弹出下载对话框
#5
问题不能解决
#6
post 呢
#7
post也不行啊。
#8
要 用个架包的 而且request 也不是HttpServletRequest了,要一个文件上传,下载的架包就好了