2011-09-11 84 views
3

文件上傳我想用公地文件上傳-1.2.2 uploal一個doc文件到servlet。問題在JSP

我使用在前端驗證碼:

<form action="fileuploader" method="post" enctype="multipart/form-data"> 
<br>File : <input type="file" name="uploadedFile"> 
<br><input type="submit"> 

,並在servlet使用此代碼:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    // TODO Auto-generated method stub 
    boolean isMultipart = ServletFileUpload.isMultipartContent(request); 
} 

但系統給了我這個錯誤

 
SEVERE: Servlet.service() for servlet FileUploaderServlet threw exception 
java.lang.ClassNotFoundException: org.apache.commons.fileupload.servlet.ServletFileUpload 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526) 
    at org.jspFileUploader.fileUploader.FileUploaderServlet.doPost(FileUploaderServlet.java:31) 
    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 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:291) 
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) 
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602) 
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) 
    at java.lang.Thread.run(Unknown Source) 

我認爲問題是在這一行:

boolean isMultipart = ServletFileUpload.isMultipartContent(request);

幫助我這個請

回答

8

您需要將commons-fileupload.jarcommons-io.jar文件放在您的webapp項目的/WEB-INF/lib文件夾中。該文件夾最終成爲webapp的運行時類路徑的一部分。需要注意的是在有點像樣的IDE像Eclipse/Netbeans的/的IntelliJ,您需要與事後構建路徑屬性來擺弄。 IDE完全知道/WEB-INF/lib中的庫將作爲運行時類路徑的一部分,因此它將自動添加到構建路徑中。

2

沒有,問題是,(Tomcat的?)無法找到 「org.apache.commons.fileupload.servlet.ServletFileUpload」。

確保您已經安裝了正確的.jar,確保你已經正確配置您的服務器和/或Web應用程序。你還沒有提供任何關於你正在運行「servlets」(Tomcat?Jboss?其他完全?)的具體細節,所以我們不能引導你進一步比「問題是你的服務器配置部分!」

附錄: 複製.jar文件到Tomcat lib目錄下,重新啓動Tomcat,然後再試一次。這應該解決「找不到類」錯誤。

+0

我正在使用Tomcat 6和commons-fileupload-1.2.3.jar,並且將它添加到「Java構建路徑」中的庫中。並且我將這個jar導入到servlet中,像這樣輸入org.apache.commons。 import org.apache.commons。上傳文件。*; import org.apache.commons.fileupload.servlet.ServletFileUpload; import org.apache.commons.fileupload.disk.DiskFileItemFactory; 這些進口沒有給出任何error.Do我需要做的另一個配置? –

+0

當你說「在'Java build path'中添加了這個庫'」時,我想你正在談論你的IDE(例如關於Eclipse)。你的IDE配置!=你的TOMCAT配置!您需要將.jar複製到Tomcat。您的IDE可能有助於自動執行這些任務,但我鼓勵您瞭解如何手動配置Tomcat,而不依賴於IDE。在你的情況下,只需將「commons-fileupload-1.2.3.jar」複製到$ CATALINA_BASE/conf – paulsm4

+3

@ paulsm4通常應該將lib複製到'WEB-INF/lib'而不是'tomcat/lib'。然而,+ 1.這似乎是問題... – home

2

除了添加這些庫到WEB-INFO/lib,我不得不從我的servlet改變進口使用這些特定的庫,由:

import org.apache.tomcat.util.http.fileupload.FileItem; 
import org.apache.tomcat.util.http.fileupload.FileUploadException; 
import org.apache.tomcat.util.http.fileupload.disk.DiskFileItemFactory; 
import org.apache.tomcat.util.http.fileupload.servlet.ServletFileUpload; 

import org.apache.commons.fileupload.FileItem; 
import org.apache.commons.fileupload.FileUploadException; 
import org.apache.commons.fileupload.disk.DiskFileItemFactory; 
import org.apache.commons.fileupload.servlet.ServletFileUpload; 
+1

您似乎在使用Tomcat 7.您不需要使用commons fileupload,只需使用新的Servlet 3.0內置'request.getPart()'方法。也是http://stackoverflow.com/questions/2422468/how-to-upload-files-in-jsp-servlet/2424824#2424824 – BalusC

-1

你應該有commons- fileupload.jarcommons-io.jar中的文件/ WEB-INF/lib

+1

你正在重複BalusC一年前發佈的.. – VDP