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 dans un dossier externe a l application dans une jsp


Sujet :

Servlets/JSP Java

  1. #1
    Candidat au Club
    Inscrit en
    Avril 2005
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 5
    Points : 4
    Points
    4
    Par défaut afficher une image dans un dossier externe a l application dans une jsp
    Bonjour tous le monde,

    alors voila ma page JSP toute simple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Insert title here</title>
    </head>
    <body>
     
    <img alt="" src="D:\a.jpg" width="80%" height="80%">
     
    </body>
    </html>
    le problème c est que cette page s affiche lorsqu elle est sous format HTML ..mais une fois intégré dans un projet web java elle n affiche rien

    je comprend qu il soit nécessaire d utiliser des codes comme celui la:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img  src="<%=request.getContextPath()%>/images/a.jpg" >
    ou bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img  src="<%=getServletContext().getRealPath ("/." )%>/images/a.jpg" >
    mais mes images ne sont pas stoké dans l application mais dans un dossier a part sur le disk du du serveur .. sachant que le ==> src="D:\a.jpg" ne marche pas

    donc comment faire pour les afficher ces images ??


    merci pour toute reponse

  2. #2
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    133
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 133
    Points : 149
    Points
    149
    Par défaut
    Il faut que ton image soit accessible par http:// déjà. Donc oublies les D: si ton disque nommé D n'est pas accessible par http.

    Dis en un peu plus sur l'architecture de ton serveur, ce qui est deployé, quel type de serveur...

  3. #3
    Candidat au Club
    Inscrit en
    Avril 2005
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 5
    Points : 4
    Points
    4
    Par défaut architechture de l application
    Bonjour, merci d abord pour la reponse rapide..

    et voila mon architecture :

    serveur d application : IBM WEBSPHERE 7.0
    JDK 1.5
    une application web j2ee .. Spring/hibernate 3.5/jsp 2.0/

    bon l application en elle meme est un application de gestion des ressources humaine.

    et les utilisateurs enregistrent les collaborateurs dans la base de données avant de uploader des fichiers tel que (leur photo, leur scan des diplome, et pieces d identité) et pour chaque type de document on a un dossier specifique sur le disk dur du serveur mais pas dans l application

    IMAGE
    IDENTITE
    DIPLOME
    CERTIFICAT MEDICALE
    ...

    doc le chemin du repertoire ou sont stoké les image et logé dans un fichier xml

    path.xml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?xml version="1.0" encoding="UTF-8"?>
    <paths>
      <path id="uploadfilepath"><value>/PROJETFILES/fichiersgenere/</value></path>
      <path id="photoUtilisateurPath"><value>/PROJETFILES/Documents_des_utilisateurs/photos/</value></path>
     
    </paths>
    et je le lis ce fichier xml via un parseur dans le CONTROLLER :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    protected Object formBackingObject(HttpServletRequest request) {
    ...
    PathXml pathXml = new PathXml(); 
    		  			 pathXml.setListPathXml(pathXml.xmlParser(request));
    String chemin = pathXml.getPath("photoCollaborateurPath");
    chemin = chemin +"a.JPG";
    user.setPhoto(chemin);
    return user;
    ....
    }
    dans la page jsp en question Show_Collaborateur.jsp

    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
    37
    38
    39
    <%@ page language="java" pageEncoding="ISO-8859-1" contentType="text/html;charset=ISO-8859-1"%>
    <%@ taglib uri="/WEB-INF/c.tld" prefix="c" %>
    <%@ page isELIgnored="false" %>
    <%@ page  import="java.io.File"%>
    <html>
    <head>
    <title>Consulter Collaborateur</title>
    </head>
    <body>
    <h1><span style="color: blue;">Consulter details Collaborateur</span></h1>
     <table border="1">
     <tr>
    <td>Login : </td><td>${Collaborateur.login}</td>
    </tr>
     <tr>
    <td>Password : </td><td>${Collaborateur.password}</td>
     </tr>
     <tr>
    <td>Nom : </td><td>${Collaborateur.nom}</td>
     </tr>
     
      <tr>
    <td>Photo  : </td>
    <td><img alt="Image innaccessible" src="${user.photo}" width="100%" height="100%"></td>
     </tr>
     
      <tr>
    <td>
    <a href="<c:url value="/list.html"/>" >Afficher tous les collaborateurs</a>
    </td>
    </tr>
    <tr>
    <td>
    <a href="<c:url value="/recherche.html"/>" >Rechercher un collaborateurs</a>
    </td>
    </tr>
     </table>
     </body>
    </html>

    tous ce que j obient c est une icone qui dis que l image n est pas accessible

    bon voila ... si besoin de plus d information ... je suis tout a vous

    en vous remerciant

  4. #4
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    133
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 133
    Points : 149
    Points
    149
    Par défaut
    fait juste un clic droit/propriete sur l'image pour trouver l'adresse de l'image.

  5. #5
    Membre confirmé
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Points : 642
    Points
    642
    Par défaut
    Tu peux leurrer la machine.

    en source de ton image tu indiques une servlet et c'est cette servlet qui ira récupérer, lire contenu dans un de tes répertoires et renvoyer l'image.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="<%=request.getContextPath()%>/MaServletImage?imageName=a">

  6. #6
    Candidat au Club
    Inscrit en
    Avril 2005
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    je t avoue que j ai pas bien compris la manipulation... !!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="<%=request.getContextPath()%>/MaServletImage?imageName=a">
    devrais donne après compilation


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="/projet/MaServletImage?imageName=a">
    or on veux que l image qui soit lue vienne de l extérieur du dossier de déploiement du projet c est quoi le rapport ?

  7. #7
    Membre confirmé
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Points : 642
    Points
    642
    Par défaut
    je vais détaillé ma réponse ^^

    Dans le cas ou l'image n'est pas dans un répertoire applicatif et non accessible à partir d'une url web alors tu peux passer par une servlet comme je te l'indiquais.

    voici un exemple de code qui associé à ton code html affichera l'image désiré:

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    import java.io.DataOutput;
    import java.io.DataOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
     
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
     
    import org.apache.log4j.Logger;
     
     
    public class ImageServlet extends HttpServlet
    {
        Logger logger = Logger.getLogger(ImageServlet.class.getName());
     
        public void doPost(HttpServletRequest request, HttpServletResponse response)
    	{			
    		doGet(request, response);		
    	}
     
    	public void doGet(HttpServletRequest request, HttpServletResponse response)
    	{	
    		try 
    		{
     
    			DataOutput output = new DataOutputStream( response.getOutputStream() );
    			response.setContentType("image/jpeg");
     
    			String nomImage = request.getParameter("ImageName");
     
    			File file = null;
     
    			FileInputStream in = null;			
     
    			String filePath = "Mon repertoire image/"+nomImage+".jpg";
     
     
    			file = new File(filePath);				
     
    			/*
    			 * Dans le cas ou l'image n'est pas présente dans le répertoire
    			 * On affiche une image par defaut 'Image Introuuvable'
    			 */
    			if(!file.exists())
    			{
    				String path = session.getServletContext().getRealPath("")+"/img/imageIntrouvable.jpg"+
    				file = new File(path);				  
    			}
     
    			in = new FileInputStream(file);
     
    			response.setContentLength((int)file.length());
     
    			byte buffer[]=new byte[4096];
    			int nbLecture;
     
    			while( (nbLecture = in.read(buffer)) != -1 )
    			{				
    				output.write(buffer,0,nbLecture);					
    			}	
     
    			in.close();
     
    		}
    		catch (IOException e)
    		{
    		    logger.error("erreur lors du renvoie du fichier jpg",e);		
    		}		
    	}	
    }

  8. #8
    Candidat au Club
    Inscrit en
    Avril 2005
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Merciiiiiiiiiiiiiiiiiiiiiiiiiii infiniment, ca marche à la perfection

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    Bonjour,

    Fais juste attention aux vulnérabilités de type "directory traversal" avec ce type de code

    Cordialement.
    InDev

  10. #10
    Membre confirmé
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Points : 642
    Points
    642
    Par défaut
    Pour le chemin tu peux ajouter la ligne suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    filePath = filePath.replace(java.io.File.separatorChar,'/');
    Oublie pas le tag résolu ^^

  11. #11
    Candidat au Club
    Inscrit en
    Avril 2005
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 5
    Points : 4
    Points
    4
    Par défaut [Résolu]
    [Résolu]

    bah oui faut bien que l on celebre ca ==> une image externe au projet dans une page jsp .... je vais fériériser le jour ou j ai pu grâce a vous tous continuer mon projet.

    je declare le 27/08 jour férié... .. meme si j ai bossé moi pour finaliser cette tache.

    merci encore une fois à tous pour vos conseils.

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

Discussions similaires

  1. Afficher une image dans un dossier externe par le biais d'une page html
    Par louis.enzo dans le forum Développement Web en Java
    Réponses: 7
    Dernier message: 30/05/2015, 19h45
  2. Réponses: 5
    Dernier message: 15/12/2011, 14h12
  3. Afficher une image d'un dossier non inclus dans Apache
    Par Thordax dans le forum Langage
    Réponses: 1
    Dernier message: 07/06/2010, 21h38
  4. afficher une image d'un dossier dans un DBImage
    Par tarmo57 dans le forum Débuter
    Réponses: 3
    Dernier message: 16/04/2010, 14h03
  5. Afficher les images d'un dossier dans une IHM
    Par danathane dans le forum Langage
    Réponses: 4
    Dernier message: 26/06/2008, 15h27

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