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

qq_16046321 qq_16046321 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
需求:需要下载一个文件,如果文件存在则下载,不存在则弹出一个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也不会跳转页面,但是同样不能下载,请教下如何能实现需求
...全文

相关推荐

评论 2
收藏 已收藏
分享
返回顶部
qq_16046321
JavaScript 87,983 成员 224,681 内容