JSP+Servlet使用commons-fileupload上传文件连接被重置解决方案

Posted 吴豪杰

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSP+Servlet使用commons-fileupload上传文件连接被重置解决方案相关的知识,希望对你有一定的参考价值。

问题描述

在JSP+Servlet下,使用commons-fileupload上传文件,网页显示连接被重置,同时服务器端莫名终止。
如图所示:

解决过程

搜索该问题无果,搜索回顾commons-fileupload的使用方法,发现需要导包commons-io-2.4.jar到WEB-INF/lib/下,而笔者并没有导入此包,因为这样工作依旧正常,而且奇怪的是IDE没有报任何的异常(比如: class没有找到等异常),而且看起来一切正常,莫名就卡在一下看似不可能的代码片段处:

BigDecimal br = new BigDecimal(bytesRead).divide(
        new BigDecimal(1024), 2, BigDecimal.ROUND_HALF_UP);
BigDecimal cl = new BigDecimal(contentLength).divide(
        new BigDecimal(1024), 2, BigDecimal.ROUND_HALF_UP);
System.out.print("当前读取的是第" + items + "个上传项,总大小" + cl
        + "KB,已经读取" + br + "KB");
// 剩余字节数
BigDecimal ll = cl.subtract(br);
System.out.print("剩余" + ll + "KB");

问题原因

经过查阅,此处总结连接被重置的可能原因:

  • 和笔者一样,忘记导入 commons-io-2.4.jar
  • 上传文件超出最大限制
servletFileUpload.setFileSizeMax(100*1024*1024);
  • JSP中类型未指定
<form action="/upload" method="post" enctype="multipart/form-data">
...
</form>

总结

该导入的包总归还是要导的,怎么都跑不了的!

以上是关于JSP+Servlet使用commons-fileupload上传文件连接被重置解决方案的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 servlet 和 jsp 做 SPA?

Servlet和JSP学习总结

jsp+Servlet+javabean 出现乱码问题

使用 jsp/servlet 清理 URL?

关于servlet-api.jar和jsp-api.jar的选择和使用

Servlet基础