Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 36
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    19

    [JSP] Visualizzare immagini salvate nel Database

    ciao a tutti,
    spero di aver postato nel modo corretto!

    Come da topic, il mio problema è che non riesco a trovare un modo per visualizzare su una pagina jsp le immagini che ho salvato nel database.
    Per rendere l'idea:

    nella classe bean:

    private UploadedFile foto;
    private byte[] fotoBytes;
    private String fotoContentType;
    private String fotoName;

    nella classe che lo salva nel db:

    add_stmt.setBytes(1, foto.getFoto().getBytes());
    add_stmt.setString(2, foto.getFoto().getContentType());
    add_stmt.setString(3, foto.getFoto().getName());

    tabella:

    CREATE TABLE FOTO(" +
    "fotoBytes BINARY not null," +
    "fotoContentType VARCHAR(256) not null," +
    "fotoName VARCHAR(256) not null,"+
    ecc....)

    ora quello che non riesco a fare è ad esempio visualizzare una o piu foto in una pagina jsp.
    Se possibile qualcuno ha un esempio stupido del codice che fa quello che mi serve? Perche al livello teorico conosco il procedimento... ma non riesco a fare effettivamente apparire l'immagine nella pagina.
    Spero di essere stato chiaro; se avete domande, chiedete pure... sto impazzendo!

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328

    Moderazione

    Attenzione a dove ti trovi quando posti: Java ha una sezione dedicata.

    Sposto.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    19
    nessuno ha un esempio stupido?

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Dato che la JSP verrà renderizzata come codice lato client, quello che puoi fare (e che, secondo me, è necessario fare) è generare il file immagine, quindi inserire la URL all'immagine nella JSP. In breve, partendo dal presupposto che tu abbia recuperato i byte dell'immagine dal DB nell'oggetto fotoBytes:
    codice:
    FileOutputStream fos = new FileOutputStream("cartella_raggiungibile_dal_browser/nome_random");
    fos.write( fotoBytes );
    fos.flush();
    fos.close();
    
    Quindi, nella JSP:
    
    [img]cartella_raggiungibile_dal_browser/nome_random[/img]
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    19
    tnx per la risposta! ora provo e ti faccio sapere

    ps. Ma per cartella raggiungibile dal browser intendi una cartella sul lato client o sul lato server?

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Originariamente inviato da emcpc
    ps. Ma per cartella raggiungibile dal browser intendi una cartella sul lato client o sul lato server?
    Ovviamente lato server: non puoi scrivere sul client.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [JSP] Visualizzare immagini salvate nel Database

    Originariamente inviato da emcpc
    ora quello che non riesco a fare è ad esempio visualizzare una o piu foto in una pagina jsp.
    Nella pagina JSP dovrai mandare in output uno o più tag <IMG> al cui interno ci deve essere l'attributo SRC che contiene l'URL di una tua servlet che si occuperà di inviare al client il contenuto binario della immagine. (chiaramente nel URL ci deve essere un qualche parametro che indica quale immagine).

    Il client (browser) farà una ulteriore "request" al server per ogni immagine e la tua servlet dovrà impostare il content-type della response in base al tipo della immagine (es. "image/gif") e quindi farà la query, leggerà i dati binari dal campo della tabella e li manderà al client.

    Quella che ho appena detto è solo una delle possibili soluzioni (ed è quella che userei io). Un'altra è quella a cui ha accennato LeleFT, cioè quando viene richiesta la pagina JSP, si leggono dal db i byte della immagine e si scrivono su un file sul server in una locazione che sia accessibile al client. Quindi nella pagina si manda in output il tag <img> specificando semplicemente un URL che punta a quel file sul server.

    Questa tecnica però porta ad altre questioni. Che succede se 2 client chiedono contemporaneamente quella stessa pagina JSP??
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    19
    un piccolo dubbio...
    se specifico una cartella ad esempio "img/asd.jpg" mi dice che non trova la cartella....
    se non specifico niente ad esempio "asd.jpg" mi crea il file nella cartella di TOMCAT...

    come devo specificare l'url?

    vorrei mettere le foto nella cartella img che sta nel progetto nella cartella war.

    TNX!

  9. #9
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328

    Re: Re: [JSP] Visualizzare immagini salvate nel Database

    Originariamente inviato da andbin
    Che succede se 2 client chiedono contemporaneamente quella stessa pagina JSP??
    E' proprio per questo che nel nome del file ho scritto "nome_random"...
    E' possibile, ad esempio, assegnare al file un nome numerico che corrisponde ai millisecondi in cui è stata effettuata la richiesta, o in alternativa, utilizzare il metodo createTempFile() della classe File per generare un nome di file univoco.

    Rimane il problema della rimozione del file, ma anche questa è risolvibile.

    Ottima la soluzione della Servlet che invia il file al parametro src del tag IMG.

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    19

    Re: Re: [JSP] Visualizzare immagini salvate nel Database

    Originariamente inviato da andbin
    Nella pagina JSP dovrai mandare in output uno o più tag <IMG> al cui interno ci deve essere l'attributo SRC che contiene l'URL di una tua servlet che si occuperà di inviare al client il contenuto binario della immagine. (chiaramente nel URL ci deve essere un qualche parametro che indica quale immagine).

    Il client (browser) farà una ulteriore "request" al server per ogni immagine e la tua servlet dovrà impostare il content-type della response in base al tipo della immagine (es. "image/gif") e quindi farà la query, leggerà i dati binari dal campo della tabella e li manderà al client.

    Quella che ho appena detto è solo una delle possibili soluzioni (ed è quella che userei io). Un'altra è quella a cui ha accennato LeleFT, cioè quando viene richiesta la pagina JSP, si leggono dal db i byte della immagine e si scrivono su un file sul server in una locazione che sia accessibile al client. Quindi nella pagina si manda in output il tag <img> specificando semplicemente un URL che punta a quel file sul server.

    Questa tecnica però porta ad altre questioni. Che succede se 2 client chiedono contemporaneamente quella stessa pagina JSP??
    grazie per la risposta.... l'unico problema è che ho sbattuto per una settimana per cercare di usare il metodo che mi stai consigliando, ma nonostante le centinaia di prove che ho fatto... il risultato sulla mia jsp non è altro che la "x" dell'immagine non trovata.

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.