Slt,
J'utilise l'IDE NetBeans 5.5 et je veux afficher dans ma page jsf une image qui est stockée dans la BD (Mysql) de type Blob.
J'arrive pas à l'afficher.
Quelqu'in peut il m'aider...
Merci
Version imprimable
Slt,
J'utilise l'IDE NetBeans 5.5 et je veux afficher dans ma page jsf une image qui est stockée dans la BD (Mysql) de type Blob.
J'arrive pas à l'afficher.
Quelqu'in peut il m'aider...
Merci
La solution la plus simple et de récupérer le flux binaire du blob et l'écrire dans un fichier temporaire, accessible du serveur.
Ensuite positionner l'url qui la cible dans ta page.
A mon avis créer un fichier temporaire ne sert a rien. Il est préférable de renvoyer diretement l'image sous forme d'un tableau de byte et d'afficher cela.
Exemple (très simplifier):
Code:
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 public byte[] getImage() { byte[] rt = null; byte[] buffer = new byte[1024]; java.io.InputStream is = null ; java.io.ByteArrayOutputStream os = null ; ..... traitement du query du resultset ... // Ici je suis sur un enregistrement valide contenant une image // dans la zone b_data // Get bytes from the BLOB using a stream Blob bl = rs.getBlob("b_data") ; if (bl != null ) { is = bl.getBinaryStream() ; os = new java.io.ByteArrayOutputStream() ; } int length = 0; try { while((length = is.read(buffer)) != -1) { os.write(buffer, 0, length); } os.flush() ; rt = os.toByteArray() ; os.close() ; } catch (Exception e) { System.out.println("--> erreur stream " + e.getMessage()) ; } ... close du resultset, du statement .... return rt ; } // et dans la page jsp un truc du style response.setContentType("image/" + montype ); response.getOutputStream().write( monbean.getImage() ) ; response.flushBuffer();
:yaisse: c'est effectivement encore plus simple.