Ciao a tutti.
Devo fare l'upload di una immagine, e sto usando le librerie di jakarta:
commons-fileupload-1.2.1.jar
commons-io-1.4.jar
prendendo spunto da questo esempio:
http://oscar982.wordpress.com/2008/0...n-jspservlets/
Utilizzo NetBeans con Glassfish.
Non credo di aver problemi con il codice... purtroppo però ottengo il seguente errore:
codice:
java.lang.NoClassDefFoundError: javax/servlet/http/HttpServletRequest
        at org.apache.commons.fileupload.servlet.ServletFileUpload.isMultipartContent(ServletFileUpload.java:68)
        at my.soloauto.uploadController.processRequest(uploadController.java:35)
        at my.soloauto.uploadController.doPost(uploadController.java:85)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:738)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:831)
        at org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:411)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:317)
... CONTINUA
Dall'errore capisco che la classe ServletFileUpload, della libreria commons-fileupload, non trova la classe HttpServletRequest!!!
Ma non riesco a spiegarmi come ciò sia possibile...
Ho aggiunto le due librerie al mio progetto, sia al modulo web che al modulo ejb.

Vi posto anche il codice che ho scritto:
1) uploadController.java
codice:
    @EJB
    private SoloAutoLocal SoloAutoBean;

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        int idAuto = (Integer)request.getSession().getAttribute("aId");
        
        boolean isMultipart = ServletFileUpload.isMultipartContent(request);
        if(isMultipart) {
            FileItemFactory factory = new DiskFileItemFactory();
            ServletFileUpload upload = new ServletFileUpload(factory);
            try {
                List listaImmagini = upload.parseRequest(request);
                SoloAutoBean.caricaFoto(idAuto, listaImmagini);
            }
            catch(FileUploadException fue) {
                fue.getMessage();
            }
        }

        Auto auto = SoloAutoBean.getAuto(idAuto);
        request.setAttribute("auto", auto);
        RequestDispatcher dispatcher =
                this.getServletContext().getRequestDispatcher("/modificaAuto.jsp");
        dispatcher.forward(request, response);
    }
2) SoloAutoBean.java
codice:
    public void caricaFoto(int idAuto, List listaImmagini) {
        try {
            Auto auto = em.find(Auto.class, idAuto);
            String nomeFile = auto.getMarca() + "_" + auto.getModello() + "_" +
                    auto.getAutoId() + ".JPEG";
            
            auto.setImmagine(nomeFile);
            em.flush();
            
            Iterator it = listaImmagini.iterator();
            while(it.hasNext()) {
                FileItem immagine = (FileItem) it.next();
                if(!immagine.isFormField()) {
                    File savedFile = new File(
                            "D:/Documenti/NetBeans Projects/SoloAuto/SoloAuto-war/build/web/Immagini/Auto/",
                            nomeFile);
                    immagine.write(savedFile);
                }
            }
        }
        catch(Exception e) {
            throw new EJBException(e.getMessage());
        }
    }
Spero qualcuno riesca a chiarirmi le idee!
Grazie!