当前位置:编程学习 > JAVA >>

jsp + servlet下载文件的问题

小弟想在jsp中点击1个按钮下载文件,点击“下载”按钮后,成功弹出下载对话框,“打开”和“保存”都没报错,但是点击“取消”,servlet就有错误发生: “Outputstream encountered error during write”,意思是说在写文件的时候流发生错误。

请问如何解决这个问题,十分感谢!!!

servlet中的代码如下:

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
String fileName = "D:\\test.csv";
FileInputStream fileInputStream = new FileInputStream(fileName); 
BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream); 
response.reset(); 

response.setContentType("text/html;"); 
response.setHeader("Content-Disposition", "attachment;filename="+fileName); 
OutputStream outputStream = response.getOutputStream(); 
byte[] b = new byte[1024]; 
int len = 0; 
while((len=bufferedInputStream.read(b)) != -1){ 
outputStream.write(b,0,len); 

outputStream.close(); 
bufferedInputStream.close(); 
fileInputStream.close(); 


--------------------编程问答-------------------- 帮顶 --------------------编程问答-------------------- 继续研究,请高人指点指点,谢谢 --------------------编程问答-------------------- 哦 --------------------编程问答-------------------- 咋不把错误贴出来 --------------------编程问答-------------------- 有一个简单的办法可以试试,
你把JSP页面中的点击下载时链接到对应的文件,文件必须是压缩文件的哈。这样浏览器就会自动识别而采取下载方式来处理。少了许多麻烦。。 --------------------编程问答-------------------- 下面是错误的信息:
com.ibm.wsspi.webcontainer.ClosedConnectionException:OutputStream encountered error during write.

错误定位在: outputStream.write(b,0,len); 这一行。

点击“打开”和“保存”都没问题,点击“取消”就发生这个错误。

请大家指点指点!谢谢!
--------------------编程问答-------------------- 这种问题,套个try catch框不就好了嘛 --------------------编程问答-------------------- 用try catch是可以捉住错误,但错误还是发生了。我想看看有没有办法解决这个错误,例如检查 response的属性之类的办法,谢谢 --------------------编程问答-------------------- com.ibm.wsspi.webcontainer.ClosedConnectionException:OutputStream encountered error during write.

这个异常是说outputStream在写过程中,发生了连接关闭的异常....就是说文件都还正在下载,你就点了取消...
所以异常是会发生的,这很正常,所以改一下

while((len=bufferedInputStream.read(b)) != -1){ 
outputStream.write(b,0,len); 


判断连接是否正连接着 --------------------编程问答-------------------- 这个问题是无法避免的,也不会影响tomcat的运行,因为当出现对话框的时候已经在服务端运行到了outputStream.write方法了,而此时的服务端是无法控制和判断客户端的,放心了,我做过的项目遇到这样的问题一概忽略 --------------------编程问答-------------------- 帮顶一个  --------------------编程问答-------------------- 真是因为你取消后,程序找不到输出的路径,但是你程序还在执行所以会报错,这里必须try catch捕获一下然后在catch中处理掉就行...
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,