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:

  1. 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é?
  2. 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?

InformationsquelleAutor Sam Ray | 2014-03-21