Bonjour,
J'aimerais stoker des documents PDF dans une base de données MySQL et ensuite pouvoir les afficher dans une page JSP.
Quelqu'un saurait-il m'indiquer comment procéder ?
Merci d'avance pour votre aide.
Bonjour,
J'aimerais stoker des documents PDF dans une base de données MySQL et ensuite pouvoir les afficher dans une page JSP.
Quelqu'un saurait-il m'indiquer comment procéder ?
Merci d'avance pour votre aide.
Dans ta base de données, il te faudra une colonne de type BLOB ou LONGBLOB comme dans l'exemple suivant qui consiste à créer une table pour stocker le fichier et les informations le concernant:
Il te suffira ensuite de récupérer ton fichier pdf de la BD MySQL (dont les données binaires se trouveront dans la colonne de type BLOB ou LONGBLOB) puis de louvrir dans un viewer pdf.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 CREATE TABLE `FILE` ( `name` varchar(255) NOT NULL, `type` varchar(255) NULL, `updated_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `data` LONGBLOB NULL, PRIMARY KEY (`name`) )TYPE=MyISAM;
merciii pour votre reponse mais j'ai une autre question je sais pas comment je peut inserer le pdf dans mysql
Tu veux l'insérer à travers du code java ou en SQL directement?
Tu as une FAQ sur JDBC pour gérer les bases de données en Java: http://java.developpez.com/faq/jdbc/?page=types#blob![]()
Regardes la FAQ dont je t'ai donné le lien et dis moi si c'est ca que tu veux faire en Java. En utilisant JDBC tu peux insérer, modifier et extraire dans une BD donc cela devrait correspondre à ce dont tu as besoin
.
uiii ,mais j'ai pas compris ou je peux remplacer le nom de ma bd et les champs de formulaire?
FAQ pour la connection à la BD: http://java.developpez.com/faq/jdbc/?page=connection
C'est donc avec ce code que tu créé la connexion:
Pour l'url tu as un exemple dans la FAQ: jdbc:mysql://localhost/maBase
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Connection connection = DriverManager.getConnection("url","user","password");
Par contre je n'ai pas compris ta demande pour les champs de formulaire. Peux tu être plus précis stp?
Voici mon code :
Pour le formulaire d'insertion :
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 package projet; import java.io.File; import java.io.FileInputStream; import java.sql.DriverManager; import com.mysql.jdbc.Connection; import com.mysql.jdbc.PreparedStatement; public class amal { public static void insererImage(String nom, String chemin) { File file = new File(chemin); try{ //lien vers la base de données Connection connection = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/amola","root","root"); //lien vers notre fichier image FileInputStream stream = new FileInputStream(file); //préparation de l'instruction SQL String sql = "INSERT INTO file VALUES (?, ?)"; PreparedStatement statement = (PreparedStatement) connection.prepareStatement(sql); //insertion de l'image statement.setString(1, nom); statement.setBinaryStream(2, stream, (int)file.length()); statement.executeUpdate(); }catch(Exception e){ //traitement des erreurs SQL, IO, etc . }finally { //fermeture de la connexion, du flux, etc. } }}
Est-ce comme ça ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 form method="post" action="inserer_fichier.php" enctype="multipart/form-data"> Nom du fichier: <input type="file" name="fichier" size="40"></br> </br> description: <input type="text" name="description" size="40"> </br> <br><input type="submit" name="ok"> </form>
Et merci beaucoup.
Ton formulaire d'insertion appelle "inserer_fichier.php" lors de son exécution. Qu'est ce que fait ce fichier php? Ton code java ( et ta méthode insererImage() ) avec lequel tu veux faire l'insertion est appelé à quel moment? L'insertion tu peux aussi la faire en php mais c'est un autre langage et j'ai l'impression que tu mélanges les technologies (php et jsp).
Oui je n'ai pas fais attention parce que j'ai fais des copier/coller. S'il te plait, si tu peux me dire les étapes à suivre parce que je n'ai rien compris. Je suis encore débutant alors je n'ai aucune idée de comment je peux faire ceci.
Merci beaucoup.
Eh bien tout d'abord, soigne ton orthographe. Ensuite, lis les liens que te donne philou44300 au lieu de les survoler et de faire du copier/coller sans réfléchir. Sachant qu'en plus des liens vers l'utilisation d'une base de données, je te conseille de regarder sur la plateforme des tutoriels sur la mise en place d'une application web Java de base avec JSP.
Responsable Java de Developpez.com (Twitter et Facebook)
Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
--------
Architecte Solution
LinkedIn : https://www.linkedin.com/in/nicolascaudard/
Vu que tu débutes, je te conseille:
- de regarder et de comprendre un exemple simple avec une JSP (tu as pleins de tutos)
- d'essayer de faire par toi même un essai avec une JSP en t'inspirant de l'exemple mais sans faire un copier/coller (cela te permettra de valider que tu as bien compris)
- de regarder la doc JDBC dont je t'ai passé des liens puis de faire des essais rapides
- de réfléchir au programme que tu veux faire en regroupant ce que tu auras appris par tes essais et par la lecture de la doc et des liens que je t'ai passé
On ne s'improvise pas développeur et il ne vaut mieux pas vouloir commencer par des choses trop compliquées dès le début sans même maitriser les bases. Il faut d'abord commencer par des choses simples (c'est pour ca que je te dis de faire des essais simples pour déjà comprendre le fonctionnement) avant d'attaquer quelque chose de plus compliqué. Tu as je pense toutes les billes mais si tu rencontres un problème bloquant après avoir appliqué mes conseils indiques le nous ici et on essayera de te débloquer (il y a une équipe et une communauté très compétentes sur ce site qui m'ont débloqué plus d'une fois)
.
Bonjour,
c'est ma servlet pour enregistrer une image dans mysql
mais il me donne une erreur au niveau de <span class="">(syntaxe erreur)
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90 package net.codejava.upload; import java.io.IOException; import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; 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("/uploadServlet") @MultipartConfig(maxFileSize = 16177215) // upload file's size up to 16MB <span class="d682zvmx1re" id="d682zvmx1re_12">public class</span> FileUploadDBServlet extends HttpServlet { // <span class="d682zvmx1re" id="d682zvmx1re_10">database connection</span> settings private String dbURL = "<span class="d682zvmx1re" id="d682zvmx1re_2">jdbc</span>:mysql://localhost:3306/AppDB"; private String dbUser = "root"; private String dbPass = "secret"; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // gets values of text fields String firstName = request.getParameter("firstName"); String lastName = request.getParameter("lastName"); InputStream inputStream = null; // input stream of the upload file // obtains the upload file part in this multipart request Part filePart = request.getPart("photo"); if (filePart != null) { // prints out some information for debugging System.out.println(filePart.getName()); System.out.println(filePart.getSize()); System.out.println(filePart.getContentType()); // obtains input stream of the upload file inputStream = filePart.getInputStream(); } Connection conn = null; // connection to the database String message = null; // message will be sent back to client try { // connects to the database DriverManager.registerDriver(new com.mysql.jdbc.Driver()); conn = DriverManager.getConnection(dbURL, dbUser, dbPass); // constructs SQL statement String sql = "INSERT INTO contacts (first_name, last_name, photo) values (?, ?, ?)"; PreparedStatement statement = conn.prepareStatement(sql); statement.setString(1, firstName); statement.setString(2, lastName); if (inputStream != null) { // fetches input stream of the upload file for the blob column statement.setBlob(3, inputStream); } // sends the statement to the database server int row = statement.executeUpdate(); if (row > 0) { message = "File uploaded and saved into database"; } } catch (SQLException ex) { message = "ERROR: " + ex.getMessage(); ex.printStackTrace(); } finally { if (conn != null) { // closes the database connection try { conn.close(); } catch (SQLException ex) { ex.printStackTrace(); } } // sets the message in request scope request.setAttribute("Message", message); // forwards to the message page getServletContext().getRequestDispatcher("/Message.jsp").forward(request, response); } } }
si vous pouvez m'aider svp!!
Bonjour,
<span ...> est une balise html : elle n'a rien à faire dans le code d'une classe java : c'est pas du code java et le compilateur te dit justement qu'il ne comprend pas ce que ça veut dire. Il ne faut pas confondre avec le code de jsp, qui mélange des parties de html (éventuellement, parce qu'on pourrait y mettre du texte, ou du xml, ou autre), et du code java, inclus dans le code de la jsp, encadré par des balises dites de scriptlet (les <%, ou <%=, terminés par %>).
L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
Nouveau sur le forum ? Consultez Les Règles du Club.
page upload.jsp
home.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
58
59
60 <%@ page import="java.io.*" %><%@ page import="java.sql.*" %> <% String contentType = request.getContentType(); if ((contentType != null) && (contentType.indexOf("multipart/form-data") >= 0)) { DataInputStream in = new DataInputStream(request.getInputStream()); int formDataLength = request.getContentLength(); byte dataBytes[] = new byte[formDataLength]; int byteRead = 0; int totalBytesRead = 0; while (totalBytesRead < formDataLength) { byteRead = in.read(dataBytes, totalBytesRead,formDataLength); totalBytesRead += byteRead; } String file = new String(dataBytes); String saveFile = file.substring(file.indexOf("filename=\"") + 10); saveFile = saveFile.substring(0, saveFile.indexOf("\n")); saveFile = saveFile.substring(saveFile.lastIndexOf("\\") + 1,saveFile.indexOf("\"")); out.println(saveFile); int lastIndex = contentType.lastIndexOf("="); String boundary = contentType.substring(lastIndex + 1,contentType.length()); int pos; pos = file.indexOf("filename=\""); pos = file.indexOf("\n", pos) + 1; pos = file.indexOf("\n", pos) + 1; pos = file.indexOf("\n", pos) + 1; int boundaryLocation = file.indexOf(boundary, pos) - 4; int startPos = ((file.substring(0, pos)).getBytes()).length; int endPos = ((file.substring(0, boundaryLocation)).getBytes()).length; FileOutputStream fileOut = new FileOutputStream(saveFile); fileOut.write(dataBytes, startPos, (endPos - startPos)); fileOut.flush(); fileOut.close(); %><Br><table border="2"><tr><td><b>You have successfully upload the file by the name of:</b> <% out.println(saveFile);%></td></tr></table> <% Connection connection = null; String connectionURL = "jdbc:mysql://localhost:3306/cdgcapitall";;; ResultSet rs = null; PreparedStatement psmnt = null; FileInputStream fis; try { Class.forName("com.mysql.jdbc.Driver").newInstance(); connection = DriverManager.getConnection(connectionURL, "root", "root"); File f = new File(saveFile); psmnt = connection.prepareStatement("insert into pdf(nom_pdf,date_pdf,pdf) values(?,?,?)"); fis = new FileInputStream(f); psmnt.setBinaryStream(1, (InputStream)fis, (int)(f.length())); int s = psmnt.executeUpdate(); if(s>0) { System.out.println("Uploaded successfully !"); } else { System.out.println("unsucessfull to upload file."); } } catch(Exception e){e.printStackTrace();} } %> <a href="download.jsp">Download File</a>
il affiche le message qu il est inserer mais je le trouve pas dans mysql merci
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 <%@ page language="java" %><Html> <HEAD><TITLE>Display file upload form to the user</TITLE></HEAD> <BODY> <FORM ENCTYPE="multipart/form-data" ACTION="Upload.jsp" METHOD=POST> <br><br><br> <center><table border="2" > <tr><center><td colspan="2"><p align="center"><B>UPLOAD THE FILE</B><center></td></tr> <tr><td> <input type="texte" name="nom_pdf"></td></tr> <tr><td> <input type="texte" name="date_pdf"></td></tr> <tr><td><b>Choose the file To Upload:</b> </td> <td><INPUT NAME="file" TYPE="file"></td></tr> <tr><td colspan="2"> <p align="right"><INPUT TYPE="submit" VALUE="Send File" ></p></td></tr> <table> </center> </FORM> </BODY> </HTML>
Salut,
Il serait judicieux que tu sois plus explicite et plus clair avec tes questions, qu'on puisse voir rapidement de quel type de problème il s'agit. On a pas tous le temps de décortiquer ton code pour comprendre ce que tu cherches à faire et ce que signifie tes questions par rapport à ce code.
Tu dis :
De quel message s'agit-il ? Je ne vois nulle part dans le code une chaîne ressemblant à ce texte. On est censé deviner que ça pourrait être "Uploaded successfully !" dont tu parles ?il affiche le message qu il est inserer
Et puis, il faut aussi un peu plus consulter les tutoriels et les faqs, se faire la main sur des exemples, et aquérir certains réflexes.
Ici je vois une requête paramétrée :
avec trois paramètres, mais il n'y a aucune ligne de code qui met une valeur dans aucun de ces paramètres... il y a forcément un rapport avec le fait que ça n'insert rien dans ta base, tu ne crois pas ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part psmnt = connection.prepareStatement("insert into pdf(nom_pdf,date_pdf,pdf) values(?,?,?)");
Tu as posté il y a 3 semaines un code qui faisait quelque chose de similaire, où les paramètres étaient bien affectés : pourquoi ne pas repartir de ce code, ou au moins le consulter pour voir les différences avec le nouveau que tu as écrit ?
L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
Nouveau sur le forum ? Consultez Les Règles du Club.
bonjour,
svp aider moi j'ai mon code qui affiche que pdf est affiche mais lorsque je cherche dans ma base je le trouve pas
merci d'avance
pour le formulaire
add.jsp
et pour l upload.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 <%@ page language="java" %> <HTML> <HEAD><TITLE>Display file upload form to the user</TITLE></HEAD> <BODY> <FORM ENCTYPE="multipart/form-data" ACTION="upload.jsp" METHOD=POST> <br><br><br> <center> <table border="0" bgcolor=#ccFDDEE> <tr> <center> <td colspan="2" align="center"><B>UPLOAD THE FILE</B><center></td> </tr> <tr> <td colspan="2" align="center"> </td> </tr> <tr> <td><b>Choose the file To Upload:</b></td> <td><INPUT NAME="file" TYPE="file"></td> </tr> <tr> <td colspan="2" align="center"> </td> </tr> <tr> <td colspan="2" align="center"><input type="submit" value="Send File"> </td> </tr> <table> </center> </FORM> </BODY> </HTML>
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 <%@ page import="java.io.*" %> <%@ page import="java.sql.*" %> <%@ page import="java.util.zip.*"%> <% String saveFile=""; String contentType = request.getContentType(); if((contentType != null)&&(contentType.indexOf("multipart/form-data") >= 0)){ DataInputStream in = new DataInputStream(request.getInputStream()); int formDataLength = request.getContentLength(); byte dataBytes[] = new byte[formDataLength]; int byteRead = 0; int totalBytesRead = 0; while(totalBytesRead < formDataLength){ byteRead = in.read(dataBytes, totalBytesRead,formDataLength); totalBytesRead += byteRead; } String file = new String(dataBytes); saveFile = file.substring(file.indexOf("filename=\"") + 10); saveFile = saveFile.substring(0, saveFile.indexOf("\n")); saveFile = saveFile.substring(saveFile.lastIndexOf("\\") + 1,saveFile.indexOf("\"")); int lastIndex = contentType.lastIndexOf("="); String boundary = contentType.substring(lastIndex + 1,contentType.length()); int pos; pos = file.indexOf("filename=\""); pos = file.indexOf("\n", pos) + 1; pos = file.indexOf("\n", pos) + 1; pos = file.indexOf("\n", pos) + 1; int boundaryLocation = file.indexOf(boundary, pos) - 4; int startPos = ((file.substring(0, pos)).getBytes()).length; int endPos = ((file.substring(0, boundaryLocation)).getBytes()).length; File ff = new File(saveFile); FileOutputStream fileOut = new FileOutputStream(ff); fileOut.write(dataBytes, startPos, (endPos - startPos)); fileOut.flush(); fileOut.close(); %><Br><table border="2"><tr><td><b>You have successfully upload the file:</b> <%out.println(saveFile);%></td></tr></table> <% Connection connection = null; String connectionURL = "jdbc:mysql://localhost:3306/cdg"; ResultSet rs = null; PreparedStatement psmnt = null; FileInputStream fis; try{ Class.forName("com.mysql.jdbc.Driver").newInstance(); connection = DriverManager.getConnection(connectionURL, "root", "root"); File f = new File(saveFile); psmnt = connection.prepareStatement("insert into file values(?)"); fis = new FileInputStream(f); psmnt.setBinaryStream(1, (InputStream)fis, (int)(f.length())); int s = psmnt.executeUpdate(); if(s>0){ System.out.println("Uploaded successfully !"); } else{ System.out.println("Error!"); } } catch(Exception e){e.printStackTrace();} } %>
Partager