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 :

Upload d'une image directement dans la BDD


Sujet :

Servlets/JSP Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 15
    Points : 6
    Points
    6
    Par défaut Upload d'une image directement dans la BDD
    Bonjour,
    Voici mon problème: sur une de mes pages de mon projet je propose à l'utilisateur d'uploader une image:

    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
     
    <form name="Formupload" action="uploadRes" method="post">
    	<h1>Upload d'un fichier</h1>
    	<p>Nom:<input type="text" name="nom"></input>
    	<br></br>
    	Catégorie:
    	<select name="categorie">
    		<% ResultSet rs = (ResultSet) request.getAttribute("cat"); 
                                    while (rs.next())
                                    {
                                            out.println("<option value="+ rs.getInt("id_cat")+ ">"+rs.getString("nom_cat")+"</option>");
                                    }
                            %>
    	</select>
    	<br></br>
    	Fichier:<input type="file" name="fichier"></input></p>
    	<br></br>
    	<br></br>
    	<input type="submit" name="valider" value="Valider"></input>
    </form>

    Lorsque l'utilisateur clic sur le bouton valider, j'appelle la servlet d'url uploadRes suivante:

    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
     
    public void doGet(	HttpServletRequest request, 
    				HttpServletResponse response)
    				throws IOException, ServletException{
     
    		try {
    	           Class.forName("com.mysql.jdbc.Driver").newInstance();
    	           System.out.println("Le chargement du driver fonctionne");
    	       } 
    		catch (Exception ex) {
    	           System.out.println("erreur");
    	       }
    		Connection conn;
    		FileInputStream fis;
    		try{
    	    	   String url = "jdbc:mysql://localhost:xxx";
    	    	   conn = DriverManager.getConnection(url, "mdp", "kwj30eqe") ;
    	    	   System.out.println("URL ok!");
    	    	   System.out.println(request.getParameter("nom"));
    	    	   File img2 = new File(request.getParameter("fichier"));
     
    	    	   PreparedStatement pstmt = null;
    	    	   pstmt = conn.prepareStatement("insert into fichier(cat_fic,nom_fic,fic_fic) VALUES (?,?,?)");
    	    	   pstmt.setInt(1,Integer.parseInt(request.getParameter("categorie")));
    	    	   pstmt.setString(2,request.getParameter("nom"));
    	    	   fis = new FileInputStream(img2);
    	    	   pstmt.setBinaryStream(3,(InputStream)fis, (int)(img.length()));
    	    	   int s =pstmt.executeUpdate();
    	    	   if (s>0)
    	    	   {
    	    		   System.out.println("Fichier uploadé");
    	    	   }
    	    	   else
    	    	   {
    	    		   System.out.println("Erreur, le fichier n'a pas pu etre uploadé");
    	    	   }
    	    	   request.getRequestDispatcher("uploadResult.jsp").forward(request, response);
    	    	   pstmt.close();
    	    	   conn.close();
    	       }
    	       catch( SQLException ex ) {
    	    	   System.out.println("Erreur dans URL!");
    	    		// cas d'erreur
    	    	}
     
     
     
    	}
     
    	public void doPost(	HttpServletRequest request, 
    			HttpServletResponse response)
    			throws IOException, ServletException{
     
    		doGet(request, response);		
    	}

    Le probléme vient du fait que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    request.getParameter("fichier")
    me renvoie que le nom du fichier mais pas son chemin absolu et donc j'ai l'erreur suivante:
    java.io.FileNotFoundException: image1.png (Le fichier spécifié est introuvable)

    Comment dois-je m'y prendre pour avoir le chemin absolu du fichier sans copier le fichier sur un serveur?
    Merci de votre aide!

  2. #2
    Membre confirmé
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 45
    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
    Il faut d'abord uploader le document pour cela passe par l'API FileUpload.
    et place l'image dans un fichier temporaire à ce moment là tu pourras l'envoyer vers ta base de données.

    Il me semble que le blob est souvent utiliser pour le stockage d'image en base.


    Que tu es le chemin relatif /absolue ou juste le nom je changera strictement rien car cette donnée est une donnée utilisateur ton application est coté serveur donc impossible d'y acceder.
    Le seul endroit ou cela marchera c'est en local sur ta machine.
    C'est pour cela que je te conseille de voir l'API FileUpload (Il ya beaucoup de post qui traite de ce sujet ici, tu devrais donc ne pas avoir de problème à l'utilisée et elle est realtivement simple).

    Au niveau du form ajoute :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    enctype="multipart/form-data"

Discussions similaires

  1. Réponses: 1
    Dernier message: 25/11/2009, 12h52
  2. MOSS - Upload d'une image directement en postant un message
    Par lordkoko dans le forum SharePoint
    Réponses: 1
    Dernier message: 16/07/2008, 23h11
  3. [MySQL] afficher une image située dans la bdd
    Par Sh4dow49 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 27/05/2008, 10h44
  4. [MySQL] Afficher une image stockée dans BLOB de la BDD
    Par gilou31 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 04/03/2008, 18h25
  5. Telecharger une image présente dans une BDD à partir de PHP
    Par guillaumeIOB dans le forum Bibliothèques et frameworks
    Réponses: 58
    Dernier message: 02/04/2006, 16h42

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