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

问题描述

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

服务端

解决过程

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

1
2
3
4
5
6
7
8
9
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
  • 上传文件超出最大限制

    1
    servletFileUpload.setFileSizeMax(100*1024*1024);
  • JSP中类型未指定

    1
    2
    3
    <form action="/upload" method="post" enctype="multipart/form-data">
    ...
    </form>

总结

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