J'ai essayé de charger un fichier pdf en utilisant java.sql.PreparedStatement
a mysql
Blob en utilisant le code suivant.
File inFile = new File("Path+BLOCK.pdf");
byte[] b = new byte[(int)inFile.length()];
PreparedStatement psmnt = (PreparedStatement)
con.prepareStatement("INSERT INTO
2012DOC (SRNO,DOCUMENT)
VALUES (?,?)"
); //con is java.sql.Connection object
psmnt.setString(1, "1200021");
psmnt.setBytes(2, b);
psmnt.executeUpdate();
Ce code s'exécute sans erreur et la base de données montre le contenu du blob, mais lorsque j'essaie de récupérer le fichier en utilisant le code ci-dessous, il donne un fichier corrompu qui ne s'ouvre pas.
ResultSet rs=con.Execute("SELECT DOCUMENT FROM 2012DOC");
rs.next();
response.setContentType("application/pdf");
response.setHeader("Content-Disposition", "attachment; filename=kjsahkjd.pdf");
java.sql.Blob blob = rs.getBlob("DOCUMENT");
ServletOutputStream servletOutputStream = response.getOutputStream();
InputStream in = blob.getBinaryStream();
int length = (int) blob.length();
int bufferSize = 1024;
byte[] buffer = new byte[bufferSize];
while ((length = in.read(buffer)) != -1) {
servletOutputStream.write(buffer, 0, length);
}
in.close();
servletOutputStream.flush();
servletOutputStream.close();
Il produit le fichier avec la même taille que l'original, mais le fichier ne s'ouvre pas. Le site pdf
le lecteur est lancé mais ne peut pas ouvrir le fichier et donne une erreur 'le fichier a été endommagé ou n'est pas un type de fichier supporté'.