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 :
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 <%@ 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>
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
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"); } } }
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 <%@ 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 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
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>
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 <%@ 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>
Avec le jar correspondant de connecteur JDBC mysql-connector-java-5.1.6-bin.jar.
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>
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.
Partager