Subiendo ficheros con JavaServer Faces y Primefaces

10-01-2017
 
Primefaces Fileupload Component

Primefaces Fileupload Component

Si estamos usando JSF(JavaServer Faces) y queremos usar el componente para subir ficheros de PrimeFaces, el ‘fileUpload’, deberemos configurar primero en el fichero ‘web.xml’ el filtro ‘FileUploadFilter’:

       <filter>
           <filter-name>PrimeFaces FileUpload Filter</filter-name>
           <filter-class>
                      org.primefaces.webapp.filter.FileUploadFilter
           </filter-class>
               <init-param>
                     <param-name>thresholdSize</param-name>
                 <param-value>51200</param-value>
               </init-param>
          <!-- <init-param>
                 <param-name>uploadDirectory</param-name>
                 <param-value>/Users/local/temp</param-value>
           </init-param>-->
         </filter>
         <filter-mapping>
           <filter-name>PrimeFaces FileUpload Filter</filter-name>
           <servlet-name>Faces Servlet</servlet-name>
         </filter-mapping>        

Cuidado! Porque si no configuramos el filtro no da ningún tipo de error, pero los ficheros no subiran.

Una vez con el filtro configurado ya podemos insertar el componente en nuestras páginas:


<p:fileUpload 
	id="fieldid" 
	auto="true" 
	fileUploadListener="#{utilController.handleFileUpload}" 
	mode="advanced" 
	skinSimple="true" 
	update=":globalform:formulari">
                                                        
</p:fileUpload>

El método ‘handleFileUpload’ del controlador tiene la siguiente pinta:


    public void handleFileUpload(FileUploadEvent event) {
    	String field=event.getComponent().getId();
    	        
    	try {   		
            /* Guardamos el fichero */
	reg.put(field, event.getFile().getFileName() );
            reg.put(field+"_content", event.getFile().getContents() );
    	} catch (Exception ex) { 
    		ex.printStackTrace();
    		FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,"", ex.getLocalizedMessage()));    		
    		}
    	}  

U pequeño post para acordarme de como se hace, porque cada vez tengo que andar consultando la documentación.

Leave a Reply

© Albert Coronado Calzada