读书人

Java文件上载获取浏览器取消操作错误

发布时间: 2012-12-20 09:53:21 作者: rapoo

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();

} ?

? ?

? }

}

读书人网 >编程

热点推荐