javaIE下载文件中取消下载出现ClientAbortException: java.io.IOException异常

在IE8与IE9的情况下下载文档如果取消下载会出一下ClientAbortException: java.io.IOException异常,网上的情况也很普遍,我的情况算是手动终止程序出现的问题,参考这个帖子http://blog.163.com/yiba_suanzao/blog/static/130557377201011235337202/

这个是有问题的代码

fileName = java.net.URLEncoder.encode(fileName,"UTF-8");
	response.setHeader("Content-disposition","attachment;filename="+fileName);
	OutputStream out = response.getOutputStream();
	byte d[] = new byte[256];
	int count = 0;
	FileInputStream in = new FileInputStream(file);
	while((count = in.read(d)) != -1){
		out.write(d,0,count);
	}
	out.flush();
	out.close();
	in.close();
} catch (IOException e) {
	e.printStackTrace();
}

这个是不出错的代码把out.flush()放到了循环里,每次都清空

File file = new File(fileName);
FileInputStream in=null;
OutputStream out=null;
try {
	response = ServletActionContext.getResponse();
	response.setContentType("application/-excel");
	if (fileName.lastIndexOf("\\")>0) {
		fileName=fileName.substring(fileName.lastIndexOf("\\")+1);				
	}
	fileName = java.net.URLEncoder.encode(fileName,"UTF-8");
	response.setHeader("Content-disposition","attachment;filename="+fileName);
	out = response.getOutputStream();
	byte d[] = new byte[256];
	int count = 0;
	in = new FileInputStream(file);
	while((count = in.read(d))>0 ){
		out.write(d,0,count);
		out.flush();
	}
} catch (IOException e) {
	logger.error(e);
}finally{
	if(in!=null)in.close();
	if(out!=null)out.close();	
}
其实我把 out.flush();去掉就没有问题。对于IO不怎么熟,才疏学浅,没法好好解释其中的原理,如有更好的解决方法,大家一起讨论下。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值