IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Servlets/JSP Java Discussion :

Afficher une image d'une BDD


Sujet :

Servlets/JSP Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de goute
    Homme Profil pro
    Développeur éclectique
    Inscrit en
    Novembre 2008
    Messages
    224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur éclectique
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2008
    Messages : 224
    Par défaut Afficher une image d'une BDD
    Bonjour,

    Je ne sais pas si je suis dans la bonne rubrique, fin bon.
    Voila ce qu'il me pose problème, j'ai différentes images enregistrer dans une base de données sous forme de CLOB.
    Et j'aimerai afficher c'est images, sans reconstituer le fichier, juste en lisant les données de la bdd.

    Pour info, j'utilise struts.

    Merci d'avance

    bye

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Tu peux passer par un Filtre, je l'explique dans cette discussion.

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre très actif Avatar de goute
    Homme Profil pro
    Développeur éclectique
    Inscrit en
    Novembre 2008
    Messages
    224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur éclectique
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2008
    Messages : 224
    Par défaut
    Oui, mais dans ton cas tu recréer le fichier (avec File ) dans un repertoire, pour ma part, je ne peux recréer de fichiers ( pour des raisons de sécurité ), il me faudrait quelques choses qui interprète directement les données de l'image pour les afficher !

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Absolument pas, regarde l'exemple avec le filtre, on récupère le flux de l'image et on le transmet directement sur le flux de sortie.
    Dans l'exemple, le flux vient d'un fichier (image) en dehors du contexte du serveur web (donc effectivement, le fichier existe), pour ton cas, tu as juste à remplacer la lecture du fichier par le flux du blob... toute petite adaptation
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre très actif Avatar de goute
    Homme Profil pro
    Développeur éclectique
    Inscrit en
    Novembre 2008
    Messages
    224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur éclectique
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2008
    Messages : 224
    Par défaut
    Ok, j'ai bien pigé le fonctionnement, donc pour moi ( qui utilise struts )

    je dois juste creer une action dans struts commun ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <action path="/getImage" name="getImage" scope="request" type="fr.logan.webapp.action.getImageAction" />
    et ensuite une classe qui envoie le flux de l'image ?

    puis dans ma jsp quelque chose de ce genre ? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <img src="${LOGAN_PATH}/logan/getImage.do?idImg=111" />
    merci pour ton aide.

  6. #6
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Non, il faut créer une classe qui étend Filter, comme dans l'exemple...
    As-tu essayé ?
    Ce n'est pas une Action struts, ça n'a rien à voir...
    Globalement, ça se passe comme ça :
    une requête http arrive sur le serveur -> si l'url correspond à "l'url pattern" du filtre (voir web.xml), c'est le filtre qui est appelé en premier -> il cherche l'image en DB et transmet le flux d'octets correspondant à l'image en retour (en prenant soin de bien spécifier le type mime)
    Un peu comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException
    {
        Connection connection = null;
        try
        {
            HttpServletRequest _request = (HttpServletRequest)request;
            HttpServletResponse _response = (HttpServletResponse)response;
     
            // Accès à la DB, récupération du BLOB et peut-être du content-type (ça serait judicieux de le sauvegarder)
            connection = ...
            Statement stmt = connection.createStatement();
            ResultSet rs = stmt.executeQuery("select monImageBlob,typeMime from MaTable where ...");
            Blob leBLOB = rs.getBlob(1);
            String typeMime = rs.getString(2);
     
            _response.setContentType(typeMime);
     
            // Set content size
            _response.setContentLength(leBLOB.length());
     
            ServletOutputStream out = _response.getOutputStream();
            out.write(leBLOB.getBytes(0, leBLOB.length()));
            out.close();
        }
        catch (Exception e)
        {
            // ... à voir    
        }
        finally
        {
            // A voir s'il faut systématiquement fermer la connection, 
            // d'un point de vue performance, c'est pas top... sauf avec un pool...
            if (connection != null) try { connection.close(); } catch (Exception e) {}
        }
    }
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Manipulation d'images : intégrer une image dans une image
    Par noscollections dans le forum VB.NET
    Réponses: 2
    Dernier message: 17/10/2014, 11h51
  2. afficher la matrice d'une image dans une figure
    Par kawther dans le forum Interfaces Graphiques
    Réponses: 15
    Dernier message: 04/12/2008, 15h20
  3. afficher une image sur une image de fond
    Par vega95 dans le forum wxPython
    Réponses: 2
    Dernier message: 26/11/2008, 18h41
  4. Afficher la valeur d'une cellule sur une image
    Par alex830001 dans le forum Excel
    Réponses: 2
    Dernier message: 02/07/2008, 11h07
  5. Afficher une image dans une cellule d'une gridview
    Par guigui11 dans le forum ASP.NET
    Réponses: 3
    Dernier message: 13/09/2007, 10h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo