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 :

telecharger une image dans BD Mysql


Sujet :

Servlets/JSP Java

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2009
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Octobre 2009
    Messages : 95
    Points : 57
    Points
    57
    Par défaut telecharger une image dans BD Mysql
    Salut mes amis,
    j'aimerai connaitre comment télécharger une image dans une base de données mysql.
    J'ai créé une interface index.jsp qui est 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
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    	pageEncoding="ISO-8859-1"%>
    <!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>Upload Image</title>
    </head>
    <body>
    	<b>Upload | <a href="view.jsp">View</a></b>
    	<br />
    	<br />
     
    	<form action="uploadImage" method="post" enctype="multipart/form-data">
    		<input type="file" name="image" required="required" /><br />
    		<br /> <input type="submit" />
    	</form>
    </body>
    </html>
    Ensuite ma servlet est la 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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    package com;
     
    import java.io.IOException;
    import java.io.InputStream;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
     
    import javax.servlet.ServletException;
    import javax.servlet.annotation.MultipartConfig;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.Part;
     
    @WebServlet("/UploadImage")
    @MultipartConfig(maxFileSize = 16177216)
    public class UploadImage extends HttpServlet {
    	private static final long serialVersionUID = 1L;
     
    	public UploadImage() {
    		super();
    	}
     
    	protected void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    	}
     
    	protected void doPost(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		String connectionURL = "jdbc:mysql://localhost:3306/uploadimage";
    		String user = "root";
    		String pass = "";
     
    		int result = 0;
    		Connection con = null;
    		Part part = request.getPart("image");
     
    		if (part != null) {
    			try {
    				Class.forName("com.mysql.jdbc.Driver");
    				con = DriverManager.getConnection(connectionURL, user, pass);
     
    				PreparedStatement ps = con.prepareStatement("insert into test(image) values(?)");
    				InputStream is = part.getInputStream();
    				ps.setBlob(1, is);
    				result = ps.executeUpdate();
    			} catch (Exception e) {
    				e.printStackTrace();
    			} finally {
    				if (con != null) {
    					try {
    						con.close();
    					} catch (Exception e) {
    						e.printStackTrace();
    					}
    				}
    			}
    		}
     
    		if (result > 0) {
    			response.sendRedirect("result.jsp?message=Image+Uploaded");
    		} else {
    			response.sendRedirect("result.jsp?message=Some+Error+Occurred");
    		}
    	}
     
    }
    Une page result.jsp qui contient le message de confirmation ou d'infirmation de téléchargement :

    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
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    	pageEncoding="ISO-8859-1"%>
    <!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>Resultat</title>
    </head>
    <body>
    	<%
    String message = request.getParameter("message");
    if(message != null){
            out.print(message);
    }
    %>
    </body>
    </html>
    Et une autre page view.jsp qui contient ce code :

    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
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    	pageEncoding="ISO-8859-1"%>
    <!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>view</title>
    </head>
    <body>
    	<b>View | <a href="index.jsp">Upload</a></b>
    	<br />
    	<br />
     
    	<form action="viewImage.jsp" method="post">
    		<input type="text" name="id" required="required"
    			placeholder="enter image id.." /><br />
    		<br /> <input type="submit" />
    	</form>
    </body>
    </html>
    Et une autre page viewImage.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
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    	pageEncoding="ISO-8859-1"%>
    <!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>viewImage</title>
    </head>
    <body>
    	<b>View | <a href="index.jsp">Upload</a></b>
    	<br />
    	<br />
     
    	<%
                    String id = request.getParameter("id");
                    %>
    	<img src="getImage.jsp?id=<%=id%>" width="400px" />
    </body>
    </html>
    getImage.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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
     
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    	pageEncoding="ISO-8859-1"%>
    <!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>
    	<%@page import="java.sql.Blob"%>
    	<%@page import="java.io.OutputStream"%>
    	<%@page import="java.sql.ResultSet"%>
    	<%@page import="java.sql.PreparedStatement"%>
    	<%@page import="java.sql.DriverManager"%>
    	<%@page import="java.sql.Connection"%>
    	<%
                    String id = request.getParameter("id");
     
                    String connectionURL = "jdbc:mysql://localhost:3306/test";
                    String user = "root";
                    String pass = "root";
     
                    Connection con = null;
     
                    try {
                            Class.forName("com.mysql.jdbc.Driver");
                            con = DriverManager.getConnection(connectionURL, user, pass);
     
                            PreparedStatement ps = con.prepareStatement("select * from data where id=?");
                            ps.setString(1, id);
                            ResultSet rs = ps.executeQuery();
     
                            if (rs.next()) {
                                    Blob blob = rs.getBlob("image");
                                    byte byteArray[] = blob.getBytes(1, (int) blob.length());
     
                                    response.setContentType("image/gif");
                                    OutputStream os = response.getOutputStream();
                                    os.write(byteArray);
                                    os.flush();
                                    os.close();
                            }
                    } catch (Exception e) {
                            e.printStackTrace();
                    } finally {
                            if (con != null) {
                                    try {
                                            con.close();
                                    } catch (Exception e) {
                                            e.printStackTrace();
                                    }
                            }
                    }
            %>
    </body>
    </html>
    Avec le jar correspondant de connecteur JDBC mysql-connector-java-5.1.6-bin.jar.

    Je n'arrive pas de télécharger l'image dans ma base de données qui contient deux champs (un identifiant et la clé primaire de type int, et un autre de type blob selon le nom image).

    S'il vous quelqu'un d'entre vous m'aider je suis vraiment bloqué et je ne sais pas comment résoudre le problème et merci d'avance.

  2. #2
    Membre du Club
    Inscrit en
    Octobre 2009
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Octobre 2009
    Messages : 95
    Points : 57
    Points
    57
    Par défaut dossier de l'application
    voila mon projet sur github

    https://github.com/wajihov/applicati...dImage-dans-BD


    aidez moi s'il vous plait PLEEEEEEEEEEEEEZE

  3. #3
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    Sauvegarder des images dans une table est une mauvaise idée. Tu predras beaucoup de performence en ecriture et lecture. Le mieux c'est d'uploader le fichier dans un répertoire et sauvegarder le nom dans la base.

    A+.

  4. #4
    Membre du Club
    Inscrit en
    Octobre 2009
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Octobre 2009
    Messages : 95
    Points : 57
    Points
    57
    Par défaut
    Merci beaucoup mon ami andry.aime pour votre conseil

    J'ai trouvé beaucoup des vidéos qui m'aider de télécharger des images dans des fichiers sur le disque dur et même d'uploader dans un répertoire de flickr mais j'ai essayé de mettre l'image dans la base de donnée (pour avoir une idée avec J2EE). J'ai essayé ce code pourquoi ne marcher pas dans mon Eclispe et j'ai trouvé que le problème au niveau de mon éditeur que j'ai utilisé.

    J'ai changé l'EDI et ça va marché avec le même code et ça va marcher et merci mon ami pour votre conseil que je mettrai dans mon expérience.

    Merci une autre fois mon ami pour votre conseil et votre participation dans ma conversation

  5. #5
    Membre confirmé
    Avatar de Glob
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Avril 2002
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Avril 2002
    Messages : 428
    Points : 630
    Points
    630
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    Sauvegarder des images dans une table est une mauvaise idée.
    Je serais plus mesuré, en disant qu'il y a des avantages et inconvénients aux deux façons de faire
    Glob
    What would you do if you were not afraid?

    Cours et tutoriels pour apprendre Java , FAQ Java, et Forum Java

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

Discussions similaires

  1. problem d'insertion d'une image dans BD Mysql
    Par taouja dans le forum JDBC
    Réponses: 8
    Dernier message: 26/04/2007, 18h53
  2. enregistrer une image dans une base mysql
    Par zidenne dans le forum Bases de données
    Réponses: 3
    Dernier message: 27/04/2006, 08h48
  3. 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, 15h42
  4. Insertion d'une image dans la une base mysql...
    Par Angeldu74 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 01/06/2005, 14h00
  5. Peut on mettre une image dans une BD MySQL ?
    Par maddog2032 dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 25/07/2003, 16h18

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