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

JAVA上传文件时遇到了这个错误,希望大家可以帮忙解决下

java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:270)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.tom.filter.EncodingFilter.doFilter(EncodingFilter.java:81)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.OutOfMemoryError: Java heap space
--------------------编程问答-------------------- 你的文件太大了,最好能设置下上传文件的大小。 --------------------编程问答-------------------- 我用的是STURTS1框架,把上传的代码贴出来,但是不知道怎么设置文件大小
UpfileForm upfileForm = (UpfileForm) form;
FormFile file = upfileForm.getFile();
FileOutputStream fileOutput;
// 如果文件夹不存在就创建一个
if (file != null) {
try {
File file1 = new File(getServlet().getServletContext()
.getRealPath("\\upload"));
if (!file1.exists()) {
file1.mkdir();
File file_swf = new File(getServlet().getServletContext()
.getRealPath("\\upload\\swf"));
if (!file_swf.exists()) {
file_swf.mkdir();
}
}
                fileOutput = new FileOutputStream(getServlet()
.getServletContext().getRealPath("\\upload\\")
+ "\\" + file.getFileName());
fileOutput.write(file.getFileData());
fileOutput.flush();
fileOutput.close();
--------------------编程问答--------------------
引用 1 楼 AlexMoonshadow 的回复:
你的文件太大了,最好能设置下上传文件的大小。
代码已经在下楼贴出来了,请问怎么设置文件大小 --------------------编程问答-------------------- 你上传的文件多大呀,能把内存弄爆了!
这人写的不错,你去看看吧! --------------------编程问答-------------------- 你去网上搜一下,很多啊。 --------------------编程问答-------------------- 你应该过滤一下文件大小的,设置最大支持的文件大小 --------------------编程问答-------------------- 第一自己写,你已有file这个了,if file.getLength>2M throw new ApplicationException('big');
或者struts过滤器不是有个fileupload参数配置吗 --------------------编程问答--------------------
引用 7 楼 Coolyqq 的回复:
第一自己写,你已有file这个了,if file.getLength>2M throw new ApplicationException('big');
或者struts过滤器不是有个fileupload参数配置吗
具体的代码可以写下吗,因为我在下边的程序里面限制了,代码我没贴出来,但是只能限制小的文件,大的文件还是报错。 --------------------编程问答-------------------- 就是要让它报错啊,if file.getLength>2M throw new ApplicationException('big');,扔出异常,然后框架可以接受这个异常,你在把异常的配置下,配置一个文件过大提示的jsp就可以了,这也就是为什么struts2 execute方法会抛出异常的原因,可以统一管理
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,