用jQuery的ajaxSumbit提交表单
首先下载jquery.form.js
在成功后取消load加载
/**
* 附件下载
* @param e_id
*/
$("#form1").ajaxSubmit({
type: "post",
url: url,
dataType: "json",
success: function (data) {
这里取消显示的loading
},error: function (msg) {
alert(msg);
}
});
}
首先下载jquery.form.js
在成功后取消load加载
/**
* 附件下载
* @param e_id
*/
$("#form1").ajaxSubmit({
type: "post",
url: url,
dataType: "json",
success: function (data) {
这里取消显示的loading
},error: function (msg) {
alert(msg);
}
});
}
我刚试了一下,用这种方法没有弹出保存文件下载框!只返回了一大串字符
返回空就行了/**
* 下载
* @param request
* @param response
* @return
* @throws Exception
*/
@RequestMapping("/fileDownload.controller")
public ModelAndView fileDownload(HttpServletRequest request, HttpServletResponse response) throws Exception{
ReturnMsg returnMsg = new ReturnMsg();
String e_id = StringUtil.trimStr(request.getParameter("e_id"));
returnMsg=FileDownTool.download(e_id,response, request);
return null ;
}
* 下载
* @param ID
* @param response
* @param request
* @return
*/
public static ReturnMsg download(String ID,HttpServletResponse response,HttpServletRequest request){
ReturnMsg returnMsg = new ReturnMsg();
try {
response.setContentType("application/x-msdownload");
FileDownTool sdf=new FileDownTool();
Map<String,Object> map=sdf.getPath(ID);
String filePath=map.get("annex_address").toString();
String fileName=map.get("annex_name_old").toString();
File file = new File(filePath);
if (file.exists() && file.isFile()){
String agent = request.getHeader("User-Agent");
boolean isMSIE = (agent != null && (agent.indexOf("MSIE") != -1 || agent.indexOf("rv") != -1));
if (isMSIE) {
fileName = URLEncoder.encode(fileName, "UTF-8");
} else {
fileName = new String(fileName.getBytes("UTF-8"), "ISO-8859-1");
}
response.setHeader("Content-Disposition", "attachment; filename=" + fileName );
InputStream is = new FileInputStream(new File(filePath));
OutputStream os = response.getOutputStream();
int flag = 0;
byte[] buff = new byte[1024*4];
try{
while((flag = is.read(buff, 0, buff.length))!=-1){
os.write(buff, 0, flag);
}
os.flush();
is.close();
os.close();
Message message = new Message();
message.setMsgRe("下载成功!");
returnMsg.setSuccessMessage(message);
return returnMsg;
}catch(Exception e){
Message message = new Message();
message.setMsgRe("资源下载失败!");
returnMsg.setSuccessMessage(message);
return returnMsg;
}
}else{
Message message = new Message();
message.setMsgRe("你访问的资源不存在!");
returnMsg.setFailMessage(message);
return returnMsg;
}
} catch (Exception e) {
Message message = new Message();
message.setMsgRe("你访问的资源不存在!");
returnMsg.setFailMessage(message);
return returnMsg;
}
}
所有你可以这样
给你个思路,在下载的时候先把load加载提示出来,
然后走你后台代码的时候,再返回到你当前的页面,laod加载肯定就没了
我现在的实现方法是在第一次提交的时候加载loading,然后弹出下载框,然后再加载 一次空的ajax提交,返回值是error,在error处把loading和遮罩再次隐藏!