Java 文件未在特定目标上载?
我刚刚在某个地方学会了将文件上传到文件夹中。我也遵循了那个教程,它也很有效 当我给出路径C:\MyFile时,它正在上载我的文件 我正在使用EclipseIDE,现在我已经在我的项目中创建了一个名为files的文件夹。不幸的是,它没有上传,你可以看到一个屏幕截图,在那里我创建了一个文件夹来上传我的文件 它不起作用了你能帮帮我吗 我得到一个错误,如下所示:Java 文件未在特定目标上载?,java,jsp,servlets,Java,Jsp,Servlets,我刚刚在某个地方学会了将文件上传到文件夹中。我也遵循了那个教程,它也很有效 当我给出路径C:\MyFile时,它正在上载我的文件 我正在使用EclipseIDE,现在我已经在我的项目中创建了一个名为files的文件夹。不幸的是,它没有上传,你可以看到一个屏幕截图,在那里我创建了一个文件夹来上传我的文件 它不起作用了你能帮帮我吗 我得到一个错误,如下所示: SEVERE: Allocate exception for servlet UploadFile java.lang.NullPointe
SEVERE: Allocate exception for servlet UploadFile
java.lang.NullPointerException
at javax.servlet.GenericServlet.getServletContext(GenericServlet.java:125)
at com.fileupload.UploadFile.<init>(UploadFile.java:20)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:154)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1099)
at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:830)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:137)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:107)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:76)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:934)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:90)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:515)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1012)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:642)
at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:223)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1597)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1555)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
以下是我的UploadFile.java源代码:
记得吗
当我以C:\Files的形式给出进入UPLOAD\u目录的路径时。然后它就开始工作了。。但是当我在我的eclipse项目中创建一个文件夹时,请参见上面的屏幕截图。它表示文件未上载
编辑
现在我正在使用:
私有最终字符串UPLOAD_DIRECTORY=getServletContext.getRealPath/files/
但得到的错误如下:
SEVERE: Allocate exception for servlet UploadFile
java.lang.NullPointerException
at javax.servlet.GenericServlet.getServletContext(GenericServlet.java:125)
at com.fileupload.UploadFile.<init>(UploadFile.java:20)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:154)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1099)
at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:830)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:137)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:107)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:76)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:934)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:90)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:515)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1012)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:642)
at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:223)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1597)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1555)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
当然,我们将非常感谢您的帮助 使用以下代码获取目录的实际路径:
getServletContext().getRealPath("/files/");
有关此方法的更多信息,请参见
如果在init方法中调用此方法,请调用super.initconfig;在init方法的第一行,建议使用或使用以下代码:
config.getServletContext().getRealPath("/files/");
你,还有那些投票否决了这个糟糕的答案并因此破坏了Stack Overflow的可信度的人,请阅读。@BalusC:你认为我应该将其标记为重复的吗?我做了与你告诉我的相同的事情,但现在我出现了空指针异常错误:javax.servlet.GenericServlet.getServletContextGenericServlet.java:125在com.fileupload.UploadFile.UploadFile.java:20@mohanlal:我更新了我的答案。仍然没有工作!!:在这里问我的问题不好吗你能帮我一下吗,我仍然有空指针异常。。我编辑了我的问题,请看。。先生,先生,我编辑过。。。先生,请看一看。。请..这是罪魁祸首,因为在你的问题中,现在我已经在我的项目中创建了一个名为文件的文件夹。这就是答案,您不应该将上传的文件保存在重复链接中接受答案的deploy文件夹中。
getServletContext().getRealPath("/files/");
config.getServletContext().getRealPath("/files/");