VER IMAGEN

carcaharas
04 de Julio del 2005
HOLA! estoy intentando almacenar un tipo de dato blob en la base de datos y luego mostrarlo por pantalla. Aqui me habeis ayudado muchíiiiiiisimo y ya lo tengo casi, por eso sólo necesito un pequeño empujoncito para terminar.
Os digo lo que tengo :
-el procedimiento almacenado
-una clase java(insertar) que tiene un callableStatement que invoca al metodo
-otra clase java(recoger) con la que pretendo recoger la imagen y mostrarla por pantalla y este es el codigo que tengo en esta clase:

...
try {
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:SERVAUTO","system","sara_system");
java.sql.Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT img FROM t_imagenes");
ResultSetMetaData rsmd = rs.getMetaData();

response.setContentType(CONTENT_TYPE);
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head><title>VerImagen</title></head>");
out.println("<body bgcolor="#ffffff">");
out.println("<hr/>");
out.println("<table border="4">");
out.println("<tr>");
for (int i = 1; i <= rsmd.getColumnCount(); i++) {
out.println("<th bgcolor=yelllow>" + rsmd.getColumnName(i) + "</th>");

}
out.println("</tr>");
while (rs.next()) {
out.println("<tr>");
out.println("<td>" + rs.getBlob(1) + "</td>");
out.println("</tr>");
}
out.println("</table>");
out.println("</body></html>");
out.close();
rs.close();
stmt.close();

}
catch (SQLException ex) {
System.out.println("Message: " + ex.getMessage());
}
catch(Exception e){e.printStackTrace();}
}

...

Vale el problema esta en que al hacer esta consulta no me muestra la imagen sino esto: oracle.sql.BLOB@1fd5e2
y esque no soy capaz de transformarlo en imagen. A ver si me podeis localizar el error( o decirme lo uqe me falta) en el codigo que os he pasado . Muchas gracias!

C. Pauquez
04 de Julio del 2005
Eso parece un servlet, no? No conozco mucho del tema, pero aparentemente estas generando HTML dinamicamente.
El punto importante alli es ese out.println("<td>" + rs.getBlob(1) + "</td>");

Creo que hace falta el tag <IMG>, pero no sabria decirte como resolver la imagen porque aparentemente no la tienes en filesystem sino directamente en un columna BLOB.

Si la imagen estuviera en filesystem, supongo que el tag quedaria más o menos asi:
out.println("<td> <img src="" + aqui iria una referencia de la imagen en filesystem + ""> </td>");

Tendrías que escribir en filesystem el contenido de ese campo BLOB para luego hacerle referencia.