文件下载问题

xianaofei 2011-04-12 03:04:48
代码如下
<%@ page contentType="text/html;charset=GBK" import="java.io.*"%>
<%
String path = (String) request.getAttribute("path");
java.io.File file = new java.io.File(path);
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
byte[] buffer = new byte[1024];
String fileName = java.net.URLEncoder.encode(path.substring(path.lastIndexOf("\\") + 1), "UTF-8");// 处理中文文件名的问题
System.out.println("fileName = " + fileName);
fileName = new String(fileName.getBytes("UTF-8"), "GBK");// 处理中文文件名的问题
System.out.println("fileName = " + fileName);
response.reset();
response.setCharacterEncoding("UTF-8");
response.setContentType("application/x-rar-compressed");// 不同类型的文件对应不同的MIME类型
response.setHeader("Content-Disposition",
"attachment; filename=" + fileName);
OutputStream os = response.getOutputStream();
int i = 0;
while ((i = bis.read(buffer)) != -1) {
os.write(buffer, 0, i);
}
bis.close();
os.close();

%>
问题是能够正常下载,但是后台报错。文件能正常下载,下载的内容也是对的
报错如下
fileName = %E4%BD%A0%E5%A5%BD.txt
fileName = %E4%BD%A0%E5%A5%BD.txt
2011-4-12 6:56:45 org.apache.catalina.core.StandardHostValve custom
严重: Exception Processing ErrorPage[exceptionType=java.lang.Exception, location=/Public/ErrorPage.jsp]
java.lang.IllegalStateException
at org.apache.coyote.Response.reset(Response.java:297)
at org.apache.catalina.connector.Response.reset(Response.java:653)
at org.apache.catalina.connector.Response.reset(Response.java:920)
at org.apache.catalina.core.StandardHostValve.custom(StandardHostValve.java:357)
at org.apache.catalina.core.StandardHostValve.throwable(StandardHostValve.java:213)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:873)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Unknown Source)
...全文
83 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
romanitc 2011-04-12
  • 打赏
  • 举报
回复
os前面加flush:
os.flush();
os.close();
zwyancc 2011-04-12
  • 打赏
  • 举报
回复
你的上传 文件大吗 我现在的上传 在远程上传 慢压 可否看你的代码


30w个号 超慢1个小时 本地1分钟 不知原因 求你帮助 或发邮件 谢谢了 QQ :1600172177
angelfly1 2011-04-12
  • 打赏
  • 举报
回复
os前面加flush:
os.flush();
os.close();

还不行的话,楼主可以看看这个帖子
http://blog.csdn.net/patriotlml/archive/2007/05/28/1628556.aspx
zwyancc 2011-04-12
  • 打赏
  • 举报
回复
还没找到 我也在做下载 我感觉这个 下载总出问题 我那个也是正常 的但是 也有个异常 我都快晕了

也帮你顶
  • 打赏
  • 举报
回复
os前面加flush:
os.flush();
os.close();

还不行的话,楼主可以看看这个帖子
http://blog.csdn.net/patriotlml/archive/2007/05/28/1628556.aspx

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧