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

JSF Java Discussion :

Affichage dans une balise img d'une image stockée en base en binaire


Sujet :

JSF Java

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2013
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Février 2013
    Messages : 22
    Points : 24
    Points
    24
    Par défaut Affichage dans une balise img d'une image stockée en base en binaire
    Bonjour à toutes et à tous,

    Je rencontre un problème pour afficher une image stockée dans ma base de données SQL Serveur sur ma page xhtml (utilisation de primefaces).

    Je m'explique, j'ai en base enregistrée l'image en format binaire avec l’extension de l'image stockée dans une autre variable.

    Maintenant, je souhaite afficher cette image, après de multiples recherches sur internet, j'ai trouvé un bout de code qui pourrait fonctionner mes qui ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="data:image/#{objet.photoExtension};base64,#{objet.photoBinaire}" />
    Est-ce que quelqu'un a déjà essayé d'afficher une image de ce type? Si oui, avez vous des pistes à me fournir pour m'aider à me débloquer svp.

    Merci à vous,

    Fed 1023

  2. #2
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Points : 2 061
    Points
    2 061
    Par défaut
    bonjour,
    Citation Envoyé par fed1023 Voir le message
    Est-ce que quelqu'un a déjà essayé d'afficher une image de ce type? Si oui, avez vous des pistes à me fournir pour m'aider à me débloquer svp.
    Pourquoi ne pas utilisé le composant primefaces qui permet de le faire sans grande difficulté ?

    graphicImage
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2013
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Février 2013
    Messages : 22
    Points : 24
    Points
    24
    Par défaut
    Bonsoir,

    Merci pour le conseil, je vais essayer avec ça et je vous redis.

  4. #4
    Membre averti

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 122
    Points : 327
    Points
    327
    Par défaut
    Dans mon cas, j'ai utilisé les Servlets comme ces codes le montre

    Vue
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
                <p:graphicImage style="width: 90%;"
                    rendered="#{MBGestionDossier.selectedFichier.typeMime eq 'image/jpeg'}"
                    value="/fichier/?file=#{MBGestionDossier.selectedFichier.pathWeb}" /> 
     
                <p:graphicImage  style="width: 90%;"
                    rendered="#{MBGestionDossier.selectedFichier.typeMime eq 'image/png'}"
                    value="/fichier/?file=#{MBGestionDossier.selectedFichier.pathWeb}"/> 
                <p:graphicImage  style="width: 90%;"
                    rendered="#{MBGestionDossier.selectedFichier.typeMime eq 'image/gif'}"
                    value="/fichier/?file=#{MBGestionDossier.selectedFichier.pathWeb}"/>

    Servlet
    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
     
    	protected void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            String nomFichier = new String(request.getParameter("file").getBytes(),"UTF-8");
     
     
            if (!nomFichier.isEmpty()) {
                try {
    				/****
                                    récupération du fichier à partir de son nom dans la varable fichier
                                    ****/				
     
    				//Convertir le fichier en byte[]
                    byte[] bytes = new byte[fichier.getStream().available()];
                    fichier.getStream().read(bytes);
                    fichier.getStream().close();
     
    				//Ecrire les byte sur response
                    response.getOutputStream().write(bytes);              
                }
                catch (Exception ex) {                
                }
            }
     
        }
    Je tiens à éxpliquer la valeur de l'attribut value de mon graphicImage

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    value="/fichier/?file=#{MBGestionDossier.selectedFichier.pathWeb}"
    Cette valeur me permet de se rediriger vers ma Servlet selon la configuration du web.xml suivant

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
        <servlet>
            <servlet-name>fichierServlet</servlet-name>
            <servlet-class>com.ged.ocm.servlet.fichierServlet</servlet-class>
        </servlet>
     
     
        <servlet-mapping>
            <servlet-name>fichierServlet</servlet-name>
            <url-pattern>/fichier/*</url-pattern>
        </servlet-mapping>

    Le chemin /fichier/* n'existe pas réelement dans les répertoires de mon projet! C'est pour différencier l'appel de mon servlet!

  5. #5
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Points : 2 061
    Points
    2 061
    Par défaut
    Citation Envoyé par AASProni Voir le message
    Dans mon cas, j'ai utilisé les Servlets comme ces codes le montre
    Je ne sais pas si ton code est récent, mais franchement c'est bien plus claire d'utiliser StreamedContent de primefaces pour le faire !
    Et je pense en plus que c'est bien plus simple a comprendre.
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre à l'essai
    Inscrit en
    Février 2013
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Février 2013
    Messages : 22
    Points : 24
    Points
    24
    Par défaut
    Merci pour les propositions.

    A vrai dire, j'ai du mal à mettre en place l'une des 2 méthodes...

    Je regarde plutôt du côté de 'StreamedContent' qui me parait plus simple à comprendre.

    Pour l'instant j'ai ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    InputStream dbStream = ...
    dbImage = new DefaultStreamedContent(dbStream, "image/jpeg");
     
    <p:graphicImage value="#{utilisateurBean.dbImage}" />
    La suite, je sais pas par où aller.

    Après je bloque.

  7. #7
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Points : 2 061
    Points
    2 061
    Par défaut
    Citation Envoyé par fed1023 Voir le message
    Pour l'instant j'ai ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    InputStream dbStream = ...
    dbImage = new DefaultStreamedContent(dbStream, "image/jpeg");
     
    <p:graphicImage value="#{utilisateurBean.dbImage}" />
    La suite, je sais pas par où aller.
    C'est plutôt un bon début. pour la suite, j'imagine que lorsque tu récupères l'image de la base tu te retrouve avec un tableau de byte ou quelque chose du même genre !
    il faut donc faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    byte[] bytes = ....
    dbImage = new DefaultStreamedContent(new ByteArrayInputStream(bytes), "image/jpeg");
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Réponses: 1
    Dernier message: 16/02/2014, 15h53
  2. [HTML 4.0] Remplacer une balise <INPUT> par une balise <BUTTON> ou <a href>
    Par LeHibou dans le forum Balisage (X)HTML et validation W3C
    Réponses: 10
    Dernier message: 28/09/2012, 14h54
  3. [RegEx] Recuperer le lien image dans une balise img src
    Par obito dans le forum Langage
    Réponses: 7
    Dernier message: 03/02/2009, 23h12
  4. appeler un fichier php dans une balise <img>
    Par zeintsu dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 17/07/2008, 16h20
  5. Réponses: 2
    Dernier message: 15/02/2008, 18h47

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