Java文件下载获取浏览器取消操作异常
//JSP页面调用
function downFile(url,filename){
var encodeURImodelUrl = encodeURI(encodeURI(url));
? ? var urls = "pltWcsjAction_downFiles.do?downFileName="+filename+"&downFilePath="+encodeURImodelUrl+"";
? ? location.href = urls;
}
?
?
//java action方法
?
private String downFileName;
private String downFilePath;
?
public void downFiles(){
if(!StringUtil.nullString(downFileName,"").equals("")
&& !StringUtil.nullString(downFilePath,"").equals("")){
String root = ServletActionContext.getRequest().getRealPath("/");
downFile(root+downFilePath,downFileName);
}
}
public void downFile(String path,String filename){
if(StringUtil.nullString(filename,"").equals("") ||
StringUtil.nullString(path,"").equals("") ||
?!new File(path).exists()){
return;
}
HttpServletResponse response = ServletActionContext.getResponse();
?BufferedInputStream bis = null; ??
? ?BufferedOutputStream bos = null; ??
? ?try{ ??
? ? ?File fileInstance = new File(path); ??
? ? ?if (fileInstance.exists()){
? ? ? ? ? bis = new BufferedInputStream(new FileInputStream(fileInstance)); ??
? ? ? ? ? bos = new BufferedOutputStream(response.getOutputStream()); ??
? ? ? ? ? byte[] buff = new byte[2048]; ??
? ? ? ? ? response.setContentType("APPLICATION/OCTET-STREAM; charset=UTF-8"); ??
? ? ? ? ? response.setHeader("Content-Disposition", "attachment; filename="" + java.net.URLEncoder.encode(filename,"utf-8") + """); ??
? ? ? ? ? int bytesRead; ??
? ? ? ? ? while (-1 != (bytesRead = bis.read(buff, 0, buff.length))){ ??
? ? ? ? ? ? ? bos.write(buff, 0, bytesRead); ??
? ? ? ? ? }
? ? ? ??
? ? ? } ? ?
? ?}catch (Exception e){ ??
? ?System.out.println("文件下载处理,浏览器取消文件下载!");
? ?//e.printStackTrace();
? ?
? ?} ??
? ?finally{ ??
?
? ? ? if (bos != null){ ??
? ? ? ? IOUtils.closeQuietly(bos); ??
? ? ? } ??
? ? ? if (bis != null){ ??
? ? ? ? IOUtils.closeQuietly(bis); ??
? ? ? }
? ? ? ?try {
? ? ? ?
? ? ? ?bos.close(); ?
bis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} ?
? ?
? }
}