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

Java EE Discussion :

Problème de lecture d'une image (chemin d'accès)


Sujet :

Java EE

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2018
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2018
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Problème de lecture d'une image (chemin d'accès)
    Bonjour à tous ! Nouveau sur le forum, j'en profite pour me présenter succinctement, je suis romain, passionné par tous ce qui touche au développement et une affection particulière pour Java , peu d'expérience dans ce langage, il m'arrive d'avoir besoins d'un coup de main.

    Et donc voici mon problème:

    Je souhaite récupérer une image afin de l’insérer dans une BDD (table isolé, une seul image par utilisateur).

    Pour ce faire, je propose un formulaire comme celui ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="file" name="logo" />
    Par la suite, je traite les données reçu:
    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
    public final class FormParamEdition extends HttpServlet {
    	public static final String LOGO				= "logo";
     
    	public static final String TABLEAU_UTILISATEUR	= "TUtilisateur";
     
    	private Map<String, String> erreur = new HashMap<String, String>();
     
    	public BeanUtilisateur TraitParamEdition(HttpServletRequest request) {
                    String logo = null;
    		Part part	= null;
     
    		try {
    			part = request.getPart( LOGO );
    			logo = getNomFichier( part );
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (ServletException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
     
     
    		if ( logo != null && !logo.isEmpty() ) {
     
    			InsertLogo formIL 	= new InsertLogo();
    			BeanUtilisateur u	= formIL.TraitInsertLogo(request, logo, util2.getEmail());
     
    			if(!formIL.getErreur().isEmpty()) {
    				for(HashMap.Entry<String, String> entry : formIL.getErreur().entrySet()) {
    					String value = entry.getValue();
     
    					setErreur("E", value);
    				}
    				return util;
    			}
    		}
     
    		UpdateUtilisateur form = new UpdateUtilisateur();
    		BeanUtilisateur util3 = form.TraitUpdateUtilisateur(request, util.getMention1(), util.getMention2(), util.getMention3(), util.getMention4(), util.getMention5(), util.getMerciClient(), util.getSignatureDevis(), util2.getEmail(), util.isGestionStock(), util.isTrimestre(), util.getMdp(), util.getCle());
     
    		return util;
    	}
     
    	private static String getNomFichier( Part part ) {
    	    /* Boucle sur chacun des paramètres de l'en-tête "content-disposition". */
    	    for (String contentDisposition : part.getHeader( "content-disposition" ).split( ";" ) ) {
    	    	/* Recherche de l'éventuelle présence du paramètre "filename". */
    	        if ( contentDisposition.trim().startsWith("filename") ) {
    	            /* Si "filename" est présent, alors renvoi de sa valeur, c'est-à-dire du nom de fichier. */
    	        	String s = contentDisposition.substring( contentDisposition.indexOf( '=' ) + 2 );
    	            return s.substring(0, s.length() -1);
     
    	        }
    	    }
    	    /* Et pour terminer, si rien n'a été trouvé... */
    	    return null;
     
    	}
     
    	public Map<String, String> getErreur() {
    		return erreur;
    	}
     
    	public void setErreur(String key, String message) {
    		erreur.put(key, message);
    	}
    }
    Et pour finir j'envoie le tout en BDD et c'est ici que ça se complique:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
                    File monImage = new File(logo).getAbsoluteFile();
    		FileInputStream istreamImage = null;
     
     
    		try {
    			istreamImage = new FileInputStream(monImage); /*Erreur ici*/
    		} catch (FileNotFoundException e1) {
    			setErreur(ATT_ERREUR, e1.getMessage());
    		}
    Avec la methode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .getAbsolutePath() /*ligne 2*/
    Je me retrouve avec un mauvais path(n'ayant rien avoir avec le path réel)

    Si je n'utilise pas cette méthode, j'obtiens l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    image.png (la syntaxe du nom de fichier, de répertoire ou de volume est incorrecte)
    Je constate que si je mets le path absolu en dur cela fonctionne et que si je passe par IE cela fonctionne.

    Je vous serez très reconnaissant de m'aider, j'ai beaucoup cherché, divers forum, la doc java de File mais ça ne donner rien...

  2. #2
    Membre actif
    Avatar de ryankarl65
    Homme Profil pro
    Data Engineer
    Inscrit en
    Juillet 2013
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Data Engineer

    Informations forums :
    Inscription : Juillet 2013
    Messages : 104
    Points : 278
    Points
    278
    Par défaut
    utilise les MultiPartFile
    puis tu convertis en B64 ou en octet
    et tu stockes cela dans ta BD

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