JSF - Mostrar imagen con primefaces desde bd

 
Vista:
sin imagen de perfil

Mostrar imagen con primefaces desde bd

Publicado por Martin (2 intervenciones) el 09/02/2015 02:15:55
Hola a todos:

Necesito saber como mostrar imagenes con primefaces, donde la ruta de ubicacion de dicha imagen esta guardada en una base de datos mysql.

Lo que tengo hecho es esto:

1
2
3
4
5
6
7
<h:panelGroup>
           <h:form enctype="multipart/form-data">
                  <p:dataGrid value="#{backingTematicas.tematicas}" var="tematica" columns="4">
                      <p:graphicImage id="image" value="/#{tematica.img_path}"  cache="false"/>
                 </p:dataGrid>
             </h:form>
</h:panelGroup>

en la pagina jsf.

En el backingTematicas cargo la imagen de la sig manera:

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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
public void upload()throws IOException
    {
        InputStream inputStream=null;
        OutputStream outputStream=null;
 
        try
        {
            if(this.file.getSize()<=0)
            {
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error:", "Ud. debe seleccionar un archivo de imagen \".png\""));
                return;
            }
 
            if(!this.file.getFileName().endsWith(".png"))
            {
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error:", "El archivo debe ser con extensión \".png\""));
                return;
            }
 
            if(this.file.getSize()>2097152)
            {
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error:", "El archivo no puede ser más de 2mb"));
                return;
            }
 
            ServletContext servletContext (ServletContext)FacesContext.getCurrentInstance().getExternalContext().getContext();
            String carpetaImagen=(String)servletContext.getRealPath("/imagen");
            tematica.setImg_path(carpetaImagen+"/"+file.getFileName());
            outputStream=new FileOutputStream(new File(carpetaImagen+"/"+"nombre"));
            inputStream=this.file.getInputstream();
 
            int read=0;
            byte[] bytes=new byte[1024];
 
            while((read=inputStream.read(bytes))!=-1)
            {
                outputStream.write(bytes, 0, read);
            }
 
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "La imagen se cargo correctamente", "Correcto"));
        }
        catch(Exception ex)
        {
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL, "Error fatal:", "Por favor contacte con su administrador "+ex.getMessage()));
        }
        finally
        {
            if(inputStream!=null)
            {
                inputStream.close();
            }
 
            if(outputStream!=null)
            {
                outputStream.close();
            }
        }
 
    }


Y en la base de datos, en la tabla tematicas me guarda lo siguiente:

id nombre img_path activa

24 Comer C:\Users\Sandoval\Documents\NetBeansProjects\comunicadorOriginal\build\web\imagen\cocina.png 1
25 Banio C:\Users\Sandoval\Documents\NetBeansProjects\comunicadorOriginal\build\web\imagen\toilet.png 0
26 leer C:\Users\Sandoval\Documents\NetBeansProjects\comunicadorOriginal\build\web\imagen/Bookmark.png 0
27 ir al banio C:\Users\Sandoval\Documents\NetBeansProjects\comunicadorOriginal\build\web\resources\tematicas/toilet.png 0
28 comunicar C:\Users\Sandoval\Documents\NetBeansProjects\comunicadorOriginal\build\web\imagen/comunicador.png 0


Espero su ayuda!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder