Mostrar imagenes en JSP almacenadas en BLOB

AIS
08 de Noviembre del 2009
Hola, tengo que mostrar imagenes en una pagina JSP que estan almacenadas en un BLOB en una base de datos ORACLE y no se como hacerlo. Encuentro como mostrar la longitud, como meterlo en un array, pero de como mostrarlo nada.

Si alguien me pudiera decir como hacerlo o donde puedo encontrar un manual (a poder ser en español)...

Gracias

mr_r
08 de Noviembre del 2009
yo anteriormente tenia muchos problemas para el manejo de campos blob en mysql con jsp. pero despues de tanto buscar encontré un programa llamado jspmaker, la vdd funciona de maravilla ya que te genera el codigo jsp a partir de las tablas, y para subir archivos lo puedes hecer de dos maneras 1 es subir el archivo a una carpeta del servidor y en la base de datos guarad solo la ruta de ese archivo
y 2 guardar el archivo directamente en la base de datos en forma binaria usando el campo tipo blob.
ojala y les sea de ayuda

jonir3
08 de Noviembre del 2009
tendrias por casialidad el codigo, uno de ejemplo apra ver como se pone la ruta en mysql de la foto y se la llama del jsp, y la busca en la clase java ?

Alex
08 de Noviembre del 2009
El problema con out es que en JSP está reservado y no lo puedes usar. Lo que te puede pasar es que al hacerlo com ose dice en este ejemplo sin "resetear" la response te de una Exception, pero no te preocupes, es meramente informativa, no da mayor problema.
Si no te funciona, tengo el código que lo hace, pero en vez de contra Oracle contra MySQL pero te serviría, mandame un mail y te comento.

malone
08 de Noviembre del 2009
1 Realizas tu coneccion a tu base de datos
2 Realizas tu sentencia sql incluyendo tu campo BLOB

3 para desplegar seria algo asi

PreparedStatement pstmt = con.prepareStatement(sql);
pstmt.setString(1, name);
ResultSet rs = pstmt.executeQuery();
if (rs.next()){
response.setContentType("image/gif");
InputStream in = rs.getBinaryStream(1);
OutputStream out = response.getOutputStream();
byte [] buffer = new byte[4096];
for (;;) {
int nBytes = in.read(buffer);
if (nBytes == -1)
break;
out.write(buffer,0,nBytes);
}
in.close();
out.flush();
out.close();
}else{
throw new SQLException("image " + name + " not found");
}
} catch (ClassNotFoundException e) {

Alx Lopez
08 de Noviembre del 2009
Estuve buscando, sin éxitom, como hacer esto varios días y siguiendo el ejemplo FUNCIONO.

Mil Gracias!