Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    chiarimenti sull'upload di immagini

    salve
    avrei bisognio di chiarimenti su come aviene il caricamento di un immagine sul server

    io ho creato una pagina jsp in cui ho la form di inserimento tale richiesta passa quindi a una servlet che mi legge l'immagine e me la salva tuttavia quando in seguito tento di visualizzare tale immagine mi viene ritornato un errore nel IO... mentre se rieseguo la mia web application l'immagine mi viene letta corretamente ... per l'upload uso la libreria org.apache.commons.fileupload ma non sono ancora riuscito a capire se il mio problema e dovuto semplicemnte al fatto che l'immagine non viene visualizzata per il fatto che non è ancora stata caricata del tutto o per qualche altro motivo... qualcuno potrebbe aiutarmi a capire?

  2. #2
    Sfera di cristallo MODE=ON.....
    Se magari postassi il codice sarebbe meglio....
    Cmq, tiro ad indovinare, l'outputStream con cui scrivi l'immagine sul disco lo chiudi ?

  3. #3
    questa è la classe che chiamo quando voglio caricare delle immagini

    codice:
    public static boolean GestisciUpload(List<FileItem> items, int idAzienda) {
            try {
                String strumento = "";
                String url = "";
                for (FileItem item : items) {
                    if (item.isFormField()) {
                        if (item.getFieldName().equals("strumento")) {
                            strumento = item.getString();
                        }
                    } else {
                        url = item.getName();
                        File dir = new File( Path +""+ idAzienda);
                        dir.mkdir();
                        File savedFile = new File(Path +""+ + idAzienda + "\\" + url);
                        item.write(savedFile);
                    }
                }
                if (url.equals("") || strumento.equals("")) {
                    return false;
                } else {
                    if (LoadDB.getIDImmagine(url, idAzienda) < 0) {
                        return LoadDB.inserisciImmagine(url, idAzienda, strumento);
                    } else {
                        return false;
                    }
                }
    
            } catch (Exception ex) {
                System.out.println(ex);
                return false;
            }
        }
    mentre questo è il codice che richiama la classe

    codice:
     
    List<FileItem> items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);
    
    Gestione.GestisciUpload(items, Integer.parseInt(request.getSession().getAttribute("idAzienda").toString()));

  4. #4
    Cosi ad occhio non vedo nessun errore potresti postare anche l'eccezione che ti viene generata; Meglio se prima correggi catch come ti ho indicato sotto.
    codice:
    } catch (Exception ex) {
                System.out.println(ex);
                return false;
            }
    meglio
    } catch (Exception ex) {
                ex.printStackTrace();
                return false;
            }

  5. #5
    il problema e proprio questo che non mi viene generata nessuna eccezione l'immagine si crea e anche giusta ... il problema è quando tento di leggerla tomcat mi da che non riesce a trovarla ... mentre se riavvio l'applicazione riesce a trovarmi le immagini inserite precedentemente... quindi ho supposto a due possibili cose:
    1) l'immagine non è ancora stata completamente caricata quando tento di leggerla...ma dubito sia cosi dato che ho provato ad aspettare diversi minuti e il problema continuava a verificarsi
    2) qualche errore di permessi o file temporanei di tomcat che non mi permette di "vedere" l'immagine senza che rifaccio prima una build del applicazione

    per questo ho chiesto chiarimenti di come l'immagine venisse caricata effetivamente sul server tomcat

    io uso netbeans per scrivere il codice ... ho anche gia provato a non usarlo quindi copiare direttamente la classi java su tomcat e provare quindi ad eseguire in questo modo l'applicazione ma comunque continua a non leggerle

  6. #6
    codice:
    <html><head><title>Apache Tomcat/7.0.39 - Error report</title><style></style> </head><body><h1>HTTP Status 404 - /WebApplication1/images/3/test.jpg</h1><HR size="1" noshade="noshade">
    
    type Status report</p>
    
    message <u>/WebApplication1/images/3/test.jpg</u></p>
    
    description <u>The requested resource is not available.</u></p><HR size="1" noshade="noshade"><h3>Apache Tomcat/7.0.39</h3></body></html>
    questo è il codice che mi invia il server quando richiamo l'immagine ma nessuna eccezione visibile all'interno del codice java

  7. #7
    Davo per scontato che sapessi che tomcat non può servire risorse di cui non è stato messo a conoscenza, nel senso che lui sa solo quali sono le risorse all'atto del deploy della web application quindi se dopo questi file vengono modificati/aggiunti/eliminati tomcat non ha modo di saperlo (e anche il motivo per il quale dopo i restart del server le immagini vengono visualizzate). La soluzione tipica che viene usata è quella di mappare tali richieste su una servlet e far si che sia essa a caricare e a servire tali risorse.

  8. #8
    La soluzione tipica che viene usata è quella di mappare tali richieste su una servlet e far si che sia essa a caricare e a servire tali risorse.
    non ti seguo riusciresti a farmi un esempio?

  9. #9
    Qui trovi l'esempio fatto.
    Il progetto è stato creato con maven quindi ha la struttura tipica che esso prevede.
    In particolare qui trovi i sorgenti delle due servlet, una serve a gestire l'upload la seconda è quella che serve le immagini uploadate.
    Mentre qui trovi le due jsp che si occupano di avviare l'upload e di visualizzare l'immagine appena inserta.
    Non dimenticare di dare un occhio al web.xml per vedere come le due servlet sono mappate.

  10. #10
    grazie
    ho provato a guardare il codice che hai postato ma non sono riuscito a capire come esattamente funzioni ... riusciresti a spiegarmi a cosa serve?

    da quello che sono riuscito a capire ogni volta che faccio una ricchiesta all'interno della cartella image parte ImageServesServlet e sostituisce la mia richiesta con un altra... ma il cosa fa questa mi sfugge al momento ... riusciresti a spiegarmi a grandi linea cosa fa? grazie ancora

    inoltre io ho la cartella image/1/test.jpg e image/2/test.jpg
    <servlet-mapping>
    <servlet-name>ImageServesServlet</servlet-name>
    <url-pattern>/images/*</url-pattern>
    </servlet-mapping>
    funziona o devo specificare anche la sottocartella?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.