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:
Dall'errore capisco che la classe ServletFileUpload, della libreria commons-fileupload, non trova la classe HttpServletRequest!!!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
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
2) SoloAutoBean.javacodice:@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); }
Spero qualcuno riesca a chiarirmi le idee!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()); } }
Grazie!

Rispondi quotando
