Foros del Web » Programación para mayores de 30 ;) » Java »

Mostrando Imagen tipo blob

Estas en el tema de Mostrando Imagen tipo blob en el foro de Java en Foros del Web. Buenos dias, estoy realizando un proyecto para la carrera que consiste en una imitación de ebbay por asi decirlo el caso esque yo he guardado ...
  #1 (permalink)  
Antiguo 07/01/2017, 04:38
 
Fecha de Ingreso: abril-2016
Mensajes: 22
Antigüedad: 1 año, 2 meses
Puntos: 0
Mostrando Imagen tipo blob

Buenos dias, estoy realizando un proyecto para la carrera que consiste en una imitación de ebbay por asi decirlo el caso esque yo he guardado los diferentes articulos en una tabla llamada articulos, uno de los atributos es un campo de tipo blob que contiene la imagen del articulo. Ya he conseguido guardarla correctamente en la base de datos sin embarlo a la hora de recuperarla no soy capaz.. os pongo mi codigo a ver si pueden indicarme
Código:
<body>
        <header>
            <a href="index.jsp">
                <!-- <em><img src="IMG/CoolClips_vc026403.png"/></em>-->
                <em>Vibbay</em>
            </a>
            <nav>
                <ul>
                    <li><a href="inicioSesion.jsp">Acceder</a></li>
                    <li><a href="formularioRegistro.jsp">Registrarse</a></li>
                </ul>
            </nav>
        </header>
        
        <%String categoriaB = request.getParameter("categoria");%>
        <div class="form">
            <div id="elements">
        <table >
            <tr><td><b>NombreProducto</b></td><td><b>Categoria</b></td><td><b>Descripcion</b></td><td><b>Precio</b></td><td><b>Foto</b></td></tr>

            <%!
                private Connection con;
                private Statement set;
                private ResultSet rs;

                public void jspInit() {
                    con = BD.getConexion();
                };
            
                public void jspDestroy() {
                    System.out.println("Entrando en el destroy()...");
                    BD.destroy();
                };
            %>
            <%
                try {
                    String nombreproducto;
                    String categoria;
                    String descripcion;
                    Float precio;
                    InputStream foto;
                    //nueva
                    OutputStream oImagen;
                    //
                    set = con.createStatement();
                    rs = set.executeQuery("SELECT * FROM articulo where categoria='"+categoriaB+"'");
                    while (rs.next()) {
                        nombreproducto = rs.getString("nombreproducto");
                        categoria = rs.getString("categoria");
                        descripcion = rs.getString("descripcion");
                        precio = rs.getFloat("precio");
                       // foto = rs.getBinaryStream("foto");
                        //nueva
                        byte array[] = rs.getBytes("foto");
                        response.setContentType("image/gif");
                        oImagen = response.getOutputStream();
                        oImagen.write(array);
                        oImagen.flush();
                        oImagen.close();
                        
            %>                         
            <tr><td><%=nombreproducto%></td>
                <td><%=categoria%></td>
                <td><%=descripcion%></td>
                <td><%=precio%></td>
                <td><%=oImagen%></td></tr>
                <%
                        }
                        rs.close();
                        set.close();
                        //con.close();
                    } catch (Exception ex) {
                        System.out.println("Error en acceso a BD Vibay08" + ex);
                    }
                %>
        </table>
            </div>
        </div>
    </body>
Nota: este ultimo codigo me da un error que dice asi: java.lang.IllegalStateException: getOutputStream() ya ha sido llamado para esta respuesta

Cualquier consejo sera bien recibido, Gracias!
  #2 (permalink)  
Antiguo 11/01/2017, 10:59
 
Fecha de Ingreso: enero-2009
Ubicación: Kandor
Mensajes: 195
Antigüedad: 8 años, 4 meses
Puntos: 11
Respuesta: Mostrando Imagen tipo blob

No puedes hacer esto en un ciclo:
Código Java:
Ver original
  1. oImagen = response.getOutputStream();
porque el objeto response corresponde a la pagina donde estas (response es objeto de sesion en JSP). Al llamar la 1ra vez vacias el buffer por eso en la siguiente iteración ya no hay nada.
Yo creo que te equivocaste de variable porque la imagen ya la obtuviste aqui:
Código Java:
Ver original
  1. byte array[] = rs.getBytes("foto");
rs es del resultset de base de datos, donde esta tu imagen.
Saludos



La zona horaria es GMT -6. Ahora son las 16:34.