Ciao ragazzi,
devo fare un progetto web dinamico (con l'ausilio di Eclipse) che permette l'upLoad di file in una pagina JSP. Per farlo sto' utilizzando il pacchetto org.apache.commons la cui home page e' a qsto indirizzo:
http://commons.apache.org/fileupload/apidocs/index.html
Con l'aiuto di qualche articolo trovato sul web ho realizzato due pagine JSP di prova che dovrebbero permettermi il download form.jsp e postform.jsp :
form.jsp
codice:
<%@page contentType="text/html"%> <%@page pageEncoding="UTF-8"%> <%-- The taglib directive below imports the JSTL library. If you uncomment it, you must also add the JSTL library to the project. The Add Library... action on Libraries node in Projects view can be used to add the JSTL 1.1 library. --%> <%-- <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> --%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Form Demo</title> </head> <body> <h1>Form Demo</h1> <form name="myform" action="postform.jsp" method="post" enctype="multipart/form-data"> <input type="file" name="uploadfile" /> <input type="submit" value=" INVIA " /> </form> </body> </html>
postform.jsp
codice:
<%@page contentType="text/html"%> <%@page pageEncoding="UTF-8"%> <%@page import="java.io.*,java.util.*,org.apache.commons.fileupload.*,org.apache.commons.io.output.*,org.apache.commons.io.*" %> <%@page import="org.apache.commons.fileupload.servlet.ServletFileUpload,org.apache.commons.fileupload.disk.DiskFileItemFactory" %> <%-- The taglib directive below imports the JSTL library. If you uncomment it, you must also add the JSTL library to the project. The Add Library... action on Libraries node in Projects view can be used to add the JSTL 1.1 library. --%> <%-- <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> --%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Post Form Destination</title> </head> <body> <h1>Retrieving Post Data</h1> <% boolean isMultipart = ServletFileUpload.isMultipartContent(request); if (isMultipart) { FileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(factory); List items = upload.parseRequest(request); Iterator itr = items.iterator(); // Ora controlliamo tutti gli item presenti // salvando tutti i file che sono stati inviati while(itr.hasNext()) { Object obj = itr.next(); try { FileItem item = (FileItem) obj; if(!item.isFormField()) { File fullFile = new File(item.getName()); File savedFile = new File(getServletContext().getRealPath("/"), fullFile.getName()); item.write(savedFile); } else { out.println("Campo form con nome:" + item.getFieldName()+" e valore: "+item.getString()+"
"); } } catch (Exception e) { } } } %> Altra prova </body> </html>
Tuttavia in esecuzione mi da errore e nn riesco a capire il perche' visto che mi sembra di aver importato correttamente le librerie utilizzate. L'errore riportato e' il seguente:
HTTP Status 500 -
--------------------------------------------------------------------------------
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: An exception occurred processing JSP page /postform.jsp at line 27
24: <h1>Retrieving Post Data</h1>
25: <%
26:
27: boolean isMultipart = ServletFileUpload.isMultipartContent(request);
28: if (isMultipart) {
29:
30:
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handle JspException(JspServletWrapper.java:519)
org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:410)
org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet .java:717)
root cause
javax.servlet.ServletException: java.lang.NoClassDefFoundError: javax/servlet/http/HttpServletRequest
org.apache.jasper.runtime.PageContextImpl.doHandle PageException(PageContextImpl.java:865)
org.apache.jasper.runtime.PageContextImpl.handlePa geException(PageContextImpl.java:794)
org.apache.jsp.postform_jsp._jspService(postform_j sp.java:132)
org.apache.jasper.runtime.HttpJspBase.service(Http JspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet .java:717)
org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:386)
org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet .java:717)
root cause
java.lang.NoClassDefFoundError: javax/servlet/http/HttpServletRequest
org.apache.commons.fileupload.servlet.ServletFileU pload.isMultipartContent(ServletFileUpload.java:68 )
org.apache.jsp.postform_jsp._jspService(postform_j sp.java:82)
org.apache.jasper.runtime.HttpJspBase.service(Http JspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet .java:717)
org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:386)
org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet .java:717)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.32 logs.
--------------------------------------------------------------------------------
Apache Tomcat/6.0.32