2009-07-17 33 views
8

¿Por qué mi código de carga de archivos no funciona?JSP - Carga de archivos con Apache Commons

Estoy usando "commons-fileupload-1.1.1.jar".

También estoy viendo un tachado en la 2da línea en "isMultipartContent" en NetBeans 6.1.

// Check that we have a file upload request 
>>>> boolean isMultipart = FileUpload.isMultipartContent(request); 

// Create variables for path, filename and extension 
appPath = application.getRealPath("\\"); 

// Create a factory for disk-based file items 
FileItemFactory factory = new DiskFileItemFactory(); 

// Create a new file upload handler 
ServletFileUpload upload = new ServletFileUpload(factory); 

// Parse the request and Extract request items 
>>>>> List items = upload.parseRequest(request); 

// create an Iterator to iterate through request items 
Iterator iter = items.iterator(); 

//Form fields 
//out.println("<br><br>While loop started"); 

while (iter.hasNext()) 
{ 
    FileItem item = (FileItem) iter.next(); 

    if(item.isFormField()) 
    { 
    String name = item.getFieldName(); 
    String value = item.getString(); 

    if(name.equals("txtUsername")) 
    { 
     _USERNAME_ = value; 

     Class.forName("org.gjt.mm.mysql.Driver"); 

     try 
     { 
     connection = DriverManager.getConnection("jdbc:mysql://localhost/ict"); 
     statement = connection.createStatement(); 
     recordset = statement.executeQuery("SELECT * FROM registered_students WHERE username=\'" + _USERNAME_ + "\'"); 

     while(recordset.next()) 
     { 
      roll = recordset.getString(4); 

      _ROLL_ = roll; 
     } 

     recordset.close(); 
     recordset=null; 

     statement.close(); 
     statement=null; 
     } 
     finally 
     { 
     if(connection!=null) 
     { 
      connection.close(); 
     } 
     } 
    } 
    } 
} 

Y yo estoy recibiendo este mensaje:

org.apache.jasper.JasperException: An exception occurred processing JSP page /Process_FileUpload.jsp at line 75 

73: 
74:   // Parse the request and Extract request items 
75:   List items = upload.parseRequest(request); 
76:   
77: 
78:   // create an Iterator to iterate through request items 
79:   Iterator iter = items.iterator(); 

Stacktrace: 
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:505) 
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:398) 
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337) 
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 
    org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390) 

root cause 

javax.servlet.ServletException: java.lang.NoClassDefFoundError: org/apache/commons/io/output/DeferredFileOutputStream 
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:850) 
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:779) 
    org.apache.jsp.Process_005fFileUpload_jsp._jspService(Process_005fFileUpload_jsp.java:546) 
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374) 
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337) 
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 
    org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390) 

root cause 

java.lang.NoClassDefFoundError: org/apache/commons/io/output/DeferredFileOutputStream 
    org.apache.commons.fileupload.disk.DiskFileItemFactory.createItem(DiskFileItemFactory.java:179) 
    org.apache.commons.fileupload.FileUploadBase.createItem(FileUploadBase.java:500) 
    org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:367) 
    org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:116) 
    org.apache.jsp.Process_005fFileUpload_jsp._jspService(Process_005fFileUpload_jsp.java:138) 
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374) 
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337) 
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 
    org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390) 

note The full stack trace of the root cause is available in the Apache Tomcat/6.0.16 logs. 

Respuesta

11

Debido Commons-fileupload tiene una dependencia en commons-io. Añádelo a tu classpath.

2

Solo una nota: la consulta de su base de datos me hace temblar un poco. Parece abierto a fugas de memoria si los objetos Statement y ResultSet no están cerrados, y ataques de inyección ya que está copiando entrada directamente en la consulta.

PreparedStatement select = null; 
ResultSet rs = null; 

try { con.prepareStatement("SELECT * FROM registered_students WHERE username = ?"); 
    select.setString(1, username); 
    rs = select.executeQuery(); 
} finally { 
    if (select != null) select.close(); 
    if (rs != null) rs.close(); 
} 
Cuestiones relacionadas