viernes, 20 de noviembre de 2015

guardar y mostrar una imagen o un archivo en la base de datos - Primefaces



METODO PARA GUARDAR LA FOTO - TENIENDO EN CUENTA QUE producto.DTO es mi BEAN donde esta guardada tanto el url de donde queda la imagen y el archivo que voy a procesar.

ServletContext servletContext = (ServletContext) FacesContext.getCurrentInstance().getExternalContext().getContext();
String realPath=(String) servletContext.getRealPath("");//obtenemos  la dirección del //contexto donde estas trabajando, para despues generar un archivo en esa direccion
        ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();
        String txtField = ec.getRequestParameterMap().get("myform:txtField");
        String filePath ec.getRealPath(String.format("/imagenes/%s",productoDTO.getPro_foto().getFileName())); //obtenemos el nombre del archivo para proceder a guardarlo en la carpeta del contexto en //este caso /imagenes
        
        try {
            FileOutputStream fos = new FileOutputStream(filePath);
            fos.write(productoDTO.getPro_foto().getContents());
            fos.flush();
            fos.close();

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        FacesContext context = FacesContext.getCurrentInstance();
        context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,String.format("Archivo cargado: %s ", productoDTO.getPro_foto().getFileName()),
                String.format("Mensaje: %s", txtField)));
String urlfinal= filePath.replace(realPath, "");
productoDTO.setFotoUrl(urlfinal); // este metodo guarda la url donde quedo guardado el archivo en el bean productoDTO despues de esto simplemente ingresas tu bean a la base de datos y ya quedo listo para ser invocado.

____________________________________________________________________________





Formulario de ingreso


debe ser de tipo <h:form enctype="multipart/form-data">

hay que desactivar el ajax en el command button para que no tengas problemas, si este esta acompañado de un calendario vas a tener problemas con ellos por lo que te sugiero que no uses actionlistener si no mas bien el action para que puedas direccionarte a una pagina nueva despues del ingreso.


<h:outputText value="Fotografía de producto" for="foto" />
<p:fileUpload value="#{tubean.fileuploadvariable}" mode="simple" skinSimple="true"/> 


La variable donde guardaras tu foto en tu bean debe de ser de tipo  UlpadedFile ej:

private UploadedFile pro_foto;
recuerda sus respectivos getter y setter

1 comentario:

  1. casino bonus codes 2021 - 100% up to £2000 + 50 free spins
    Free spins 슬롯 나라 no deposit bonuses and promo codes at casino bonus casinos. Get 텐벳 먹튀 the latest 2021 슬롯게임 casino 세븐 포커 족보 bonus codes and 스포츠토토 배당률 free spins offers from

    ResponderEliminar