Ciao a tutti,
nella mia webapp ho inserito la possibilità per l'utente di "uploadare" immagini in una sua cartella personale.
La pagina JSP che gestisce l'upload fa anche il "listing" dei file immagine contenuti nella cartella dell'utente.
I problemi che ho sono 2:
1) quando l'upload dell'immagine termina la pagina JSP si ricarica ma nel "listing" della directory l'immagine appena caricata non viene visualizzata (mentre le altre sì) ma compare il suo box "segnaposto". Infatti l'html per l'immagine in questione viene generato ma sembra che "l'immagine non sia fisicamente disponibile nel contesto del WebServer (Tomcat)".
La nuova immagine viene caricata solo rifacendo il deploy dell'applicazione... e quindi mi viene da pensare che l'immagine venga caricata nel contesto del webserver e risulta quindi disponibile. Sbaglio? Come posso "sincronizzare" le cartelle?
2) ogni utente può "uploadare" immagini di qualsiasi dimensione (in pixel!)... quando vado a visualizzare le immagini dell'utente mi è difficile creare un layout che possa contenere img di svariate misure (per assurdo una da 800x600 e una 20x30!!!)... quindi chiedo: esiste un modo Java Servlet/JSP per fare il resizing delle immagini prima di visualizzarle? Non chiedo cose complicate... mi basterebbe solo sapere altezza e larghezza dell'immagine per andare poi a visualizzarla "scalata" tramite gli attributi 'height' e 'width' di img. (sò che il risultato sarà mediocre ma per iniziare va bene).
Anche un metodo clientSide con Javascript potrebbe andar bene... ma forse non è il forum adatto!
Posto un pò di codice... magari può servire a qualcuno in futuro e aiuta a capire quanto detto:
Per l'upload delle immagini uso questo bean: http://www.javazoom.net/jzservlets/u...ploadbean.htmlcodice://Filtrare lista file (toglie le directory e file thumbs.db) FilenameFilter filter = new FilenameFilter() { public boolean accept(File dir, String name) { boolean flag = false; File file = new File ( dir,name ) ; if (file.isFile()){ flag = true; if (name.endsWith ( ".db" )) flag = false; } return flag; } }; // Lista immagini della directory dell'utente String[] userFileList = userFolder.list(filter); // Bean Gestore dell'upload UploadBean upBean = new UploadBean(); upBean.setFolderstore(userFolderPath); upBean.setOverwrite(true); upBean.setWhitelist(whiteList); upBean.setFilesizelimit(3145728); /****** ... *******/ <form method="post" action="imageUpload.jsp" name="upform" enctype="multipart/form-data"> <input type="file" name="uploadfile" size="40" onchange="preview(this)"> <input type="hidden" name="todo" value="upload"> <input type="submit" name="Submit" value="Upload"> <input type="reset" name="Reset" value="Cancel"> </form> /******** ... ********/ <%if(userFileList!=null) { for(int i=0; i<userFileList.length; i++) { %> <tr> <td valign="middle">[img]img/delete.gif[/img]');">[img]<%=ctxUrl%>userImages/<%=userName%>/<%=userFileList[i]%>[/img]<td> </tr> <%} } userFileList = null; %>
il migliore che ho trovato fin'ora!
Alcune precisazioni:
La userfolder è qualcosa del genere: D:/Progetto/nomeWeb/userImages/nomeUtente
mentre il src delle immagini nell'htm è: http://localhost:8084/nomeWeb/userIm...e/immagine.jpg
Scusate il post lungo... grazie a chi risponde!!!
Bye