我修改SmartUpload类的具体做法如下:
(1)upload()方法加上了totalBytes大小的限制,并加上了try...catch...finally去处理异常,如下:
try{
if(m_totalBytes>200000000 || m_totalBytes<0) //限制最大上传文件大小200000000B
{
throw new SmartUploadException("the file is too large to upload.");
}
else
{
m_binArray = new byte[m_totalBytes];
......
}
catch(Exception e){......}
finally{ m_binArray=null;}
(2)在SmartUpload类中增加了一个stop()方法,该方法完成的工作就是释放m_binArray数组所占的内存空间。代码如下:
try{
m_binArray=null;
}
catch(Exception e)
{
System.out.println(e.toString());
}
jspsmartupload组件就做了这些修改,下面就需要更改调用该组件的JSP文件了。其实这个JSP文件有一些地方写得不规范。(以下代码中mySmartUpload表示SmartUpload的一个实例化对象)
调用SmartUpload.upload()方法要捕获一个异常。
try{
mySmartUpload.upload();
}
catch(Exception e)
{
out.print("文件太大,无法上传");
return;
}
(3)程序结束时要调用SmartUpload.stop()方法。
mySmartUpload.stop();
mySmartUpload=null;
结果还是出错。我调试了一下,发现仍是在将上传的所有文件放入内存里,即执行mySmartUpload.upload()时出问题的,tomcat报错如下:
(1)upload()方法加上了totalBytes大小的限制,并加上了try...catch...finally去处理异常,如下:
try{
if(m_totalBytes>200000000 || m_totalBytes<0) //限制最大上传文件大小200000000B
{
throw new SmartUploadException("the file is too large to upload.");
}
else
{
m_binArray = new byte[m_totalBytes];
......
}
catch(Exception e){......}
finally{ m_binArray=null;}
(2)在SmartUpload类中增加了一个stop()方法,该方法完成的工作就是释放m_binArray数组所占的内存空间。代码如下:
try{
m_binArray=null;
}
catch(Exception e)
{
System.out.println(e.toString());
}
jspsmartupload组件就做了这些修改,下面就需要更改调用该组件的JSP文件了。其实这个JSP文件有一些地方写得不规范。(以下代码中mySmartUpload表示SmartUpload的一个实例化对象)
调用SmartUpload.upload()方法要捕获一个异常。
try{
mySmartUpload.upload();
}
catch(Exception e)
{
out.print("文件太大,无法上传");
return;
}
(3)程序结束时要调用SmartUpload.stop()方法。
mySmartUpload.stop();
mySmartUpload=null;
结果还是出错。我调试了一下,发现仍是在将上传的所有文件放入内存里,即执行mySmartUpload.upload()时出问题的,tomcat报错如下:
解决方案 »
- 这是用什么框架编写的
- 求,action传入的jsp页面,要求每2分钟刷新一次,怎么做呢?
- 这个存储过程表示的是什么意思?
- 关于文件上传的问题
- EditPlus里面能做MySql之类的数据库吗?
- Form里有一个属性是一个List,怎么用logic:iterate遍历这个List呢
- [求助]在Bean中输出html问题(我找到方法了,不过出了点问题)
- 寻求cobol的朋友,共同学习
- 求一判断checkbox是否选中的代码!!急~~~~~~~~~~
- jsp与那个数据库是最好的搭配啊???
- struts的问题,启动服务后,在初始页里放了个<logic:redirect forward="welcome"/>,进之,出错。如果直接敲welcome对应的xxx.do,正常,
- 各位高手看看这个bean有什么问题,不知道为什么jsp出错阿!
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:248)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2415)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:432)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:386)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:534)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:530)
at java.lang.Thread.run(Thread.java:536)
root cause javax.servlet.ServletException
at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:533)
at org.apache.jsp.do_upload_jsp._jspService(do_upload_jsp.java:377)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:137)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:204)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2415)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:432)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:386)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:534)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:530)
at java.lang.Thread.run(Thread.java:536)
送我一份![email protected]
我的MAIL是[email protected]
可以用commons-fileupload来上传大文件,我在局域网里用commons-fileupload上传过300多M的文件
可以用commons-fileupload