comment insérer et extraire fichier pdf à partir de blob à l'aide de Java
Je suis en train de construire un code Java qui utilise JDBC pour:
1) Insérer un PDF dans un longblob
colonne de MySQL et le nom de fichier dans un varchar
colonne.
2) Récupérer un fichier PDF à l'aide du nom de fichier (le considérer comme la clé primaire) et de l'afficher à l'utilisateur.
Comme il est clair par dessus, mon tableau a deux colonnes:
filename pdf_file
-------- ---------
stock stock.pdf
kids kid.pdf
Voici le code que j'ai écrit:
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
JFileChooser chooser = new JFileChooser();
chooser.showOpenDialog(null);
File f = chooser.getSelectedFile();
String filename = f.getAbsolutePath();
path = filename;
newpath = path.replace('\\', '/');
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
try{
File newpdf = new File(newpath);
FileInputStream fis = new FileInputStream(newpdf);
ByteArrayOutputStream baos= new ByteArrayOutputStream();
byte[] buff = new byte[2048000];
for(int readNum; (readNum=fis.read(buff)) !=-1 ; ){
baos.write(buff,0,readNum);
}
userpdf=baos.toByteArray();
}
catch(Exception e){
JOptionPane.showMessageDialog(null, e);
}
PreparedStatement pstmt = null;
try{
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/ppl","root","");
String proj_name = JOptionPane.showInputDialog("Please enter name of the file");
/*
String insert = "INSERT INTO project VALUES ('" + login.admission + "','" + login.yr + "','" + proj_name + "','" + userpdf + "')";
java.sql.PreparedStatement pst = con.prepareStatement(insert);
pst.executeUpdate(insert);*/
String sql = "INSERT INTO project"+"VALUES (?,?,?,?)";
pstmt = (PreparedStatement) con.prepareStatement(sql);
pstmt.setString(1, login.admission);
pstmt.setString(2, login.yr);
pstmt.setString(3, proj_name);
pstmt.setBlob(4, userpdf); //This line has an error may be because of userpdf.Plz //suggest
pstmt.executeUpdate();
JOptionPane.showMessageDialog(null, "Saved");
}
catch(Exception e){
JOptionPane.showMessageDialog(null, e);
}
Les problèmes, je suis confronté sont:
- Si j'insère un fichier PDF, 175 ko, la table MySQL montre que sa taille est de 10 ou de 11 octets. Pourquoi est-ce arrivé?
- Lorsque j'essaie de récupérer le PDF, je reçois un message qu'il est corrompu. (Je n'ai pas inclus de récupération de code).
Veuillez expliquer à l'aide du scénario ci-dessus, comme je suis un débutant en Java. Pourquoi est-ce que toute ma pdf ne va pas dans la table mysql?
Vous devez vous connecter pour publier un commentaire.
Pour insérer le fichier PDF dans la base de données le code suivant semble bien fonctionner pour moi:
vous devez déclarer une variable privée de type
Byte[](private byte[] usjerpdf = null;)
et de changer votrepstmt.setBlob(4, userpdf)
àpstmt.setBytes(4, userpdf)
et il fonctionne parfaitement.//J'ai un tableau en plusieurs parties qui a colonne blob PDFFile
//Ci-dessous simple code fonctionne parfaitement bien. Je suis de passage, la liste des Documents ID