用form表单的submit实现下载功能

qq_16046321 2016-01-12 04:09:09
需求:需要下载一个文件,如果文件存在则下载,不存在则弹出一个alert提示文件正在生成
前台jsp:
<form id=""
action="${ pageContext.request.contextPath}/downloadRegressionTesting.action"
method="post">
<input type="submit" name="submit" value="下载回归测试报告"
onclick="downloadRegressionTesting()" />
</form>

function downloadRegressionTesting(){
$.ajax({
type : "post",
url:"${pageContext.request.contextPath}/downloadRegressionTesting.action",
success : function(datas){
ajaxobj=eval("("+datas+")");
alert(ajaxobj.wait);
}
});
}

后台controller:
@RequestMapping("/downloadRegressionTesting")
@ResponseBody
public void downloadRegressionTesting(HttpServletRequest request,
HttpServletResponse response) throws IOException {

request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");

File report = new File("XXXXXX\\sdkfjdlkfjslfjlk.xls");
if (report.exists()) {
String path = "XXXXXX\\sdkfjdskfldslkfslkfjslfjlk.xls";
File file = new File(path);
String filename = file.getName();
InputStream fis = new BufferedInputStream(new FileInputStream(path));
byte[] buffer = new byte[fis.available()];
fis.read(buffer);
fis.close();
response.reset();
response.addHeader("Content-Disposition", "attachment;filename="
+ new String(
filename.replaceAll(" ", "").getBytes("utf-8"),
"iso8859-1"));
response.addHeader("Content-Length", "" + file.length());
OutputStream os = new BufferedOutputStream(
response.getOutputStream());
response.setContentType("application/octet-stream");
String str = buffer.toString();
System.out.println(str);
System.out.println(buffer);
os.write(buffer);
os.flush();
os.close();

} else {
String wait = "{\"wait\":\"回归测试还在进行,请耐心等待\"}";
PrintWriter out = response.getWriter();
out.write(wait);
out.close();

}



}


上面代码可以实现下载,并且在没有文件的时候会提示一个alert,但是提示完之后会跳转到一个新的白页面。
试过用onsubmit="return false();",这样不会跳转页面,但是也不能下载,如果用onsubmit="return downloadRegressionTesting();",则会提示两次alert,可以下载也不跳转,如果将submit改成button也不会跳转页面,但是同样不能下载,请教下如何能实现需求
...全文
581 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_16046321 2016-01-12
  • 打赏
  • 举报
回复
楼上可以实现,
slwsss 2016-01-12
  • 打赏
  • 举报
回复
<iframe style="display:none;" name="dl"></iframe> <form target="dl" id=""

87,904

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧