2010-12-05 43 views
6

Hoy tengo un problema con PrimeFaces FileUpload. Funciona bien, pero los archivos se almacenan en el directorio temporal de JBoss, así que cada vez que vuelvo a desplegar la aplicación o simplemente confío las fuentes a svn, todas las imágenes que cargué desaparecen. Así que quería preguntar si existe una forma de guardar las imágenes en el directorio "fuente" del proyecto de guerra.j2ee primefaces fileupload file saving destination

Mi método handleFileUpload:

public String getUrlBase() { 
    return FacesContext.getCurrentInstance().getExternalContext().getRealPath("//upload"); 
} 

public void handleFileUpload(FileUploadEvent event) { 
     new File(getUrlBase() + "/" + album.getId()).mkdirs(); 
     File result = new File(getUrlBase() + "/" + album.getId() + "/" + event.getFile().getFileName()); 

     try { 
      FileOutputStream fileOutputStream = new FileOutputStream(result); 

      byte[] buffer = new byte[BUFFER_SIZE]; 

      int bulk; 
      InputStream inputStream = event.getFile().getInputstream(); 
      while (true) { 
       bulk = inputStream.read(buffer); 
       if (bulk < 0) { 
        break; 
       } 
       fileOutputStream.write(buffer, 0, bulk); 
       fileOutputStream.flush(); 
      } 

      fileOutputStream.close(); 
      inputStream.close(); 

      FacesMessage msg = new FacesMessage("Succesful", 
        event.getFile().getFileName() + " is uploaded."); 
      FacesContext.getCurrentInstance().addMessage(null, msg); 

     } catch (IOException e) { 
      e.printStackTrace(); 
      FacesMessage error = new FacesMessage("The files were not uploaded!"); 
      FacesContext.getCurrentInstance().addMessage(null, error); 
     } 
    } 

EDIT: otro tema

mi opinión archivo:

<h:form enctype="multipart/form-data" prependId="false"> 
     <p:growl id="messages" showSummary="true" showDetail="true" /> 
     <p:fileUpload fileUploadListener="#{photo.handleFileUpload}" 
         update="messages" sizeLimit="1073741824" 
         multiple="true" label="choose" allowTypes="*.jpg;*.png;*.gif;" 
         description="Images" /> 
    </h:form> 

Cuando agrego update = "mensajes" a la FileUpload me sale

javax.servlet.ServletException: null source 

cada vez que trato de abrir la página con el archivoUpload. ¿No sabes cómo deshacerte de eso?

Respuesta

1

Puede configurar el directorio de carga en el web.xml si lo desea.

<filter> 
    <filter-name>PrimeFaces FileUpload Filter</filter-name> 
    <filter-class> 
    org.primefaces.webapp.filter.FileUploadFilter 
    </filter-class> 
    <init-param> 
    <param-name>uploadDirectory</param-name> 
    <param-value>/Users/primefaces/temp</param-value> 
    </init-param> 
</filter> 
+1

De acuerdo con la guía de uso, este es solo un lugar donde se almacenan los archivos temporales. Necesito subir algunas imágenes y luego mostrarlas en una galería de fotos ... así que me gustaría guardarlas en el directorio "cargar" en la raíz web (donde, por ejemplo, está el directorio WEB-INF). Entonces, cuando confío la fuente a svn, otras personas también tendrán las imágenes en la galería. He intentado configurar uploadDIrectory para/upload, pero parece que no funciona. –

+2

No mantenga las imágenes cargadas en las carpetas de origen. Nunca (¿vienes del fondo de PHP?). Guárdelos en algún lugar del disco. Si desea compartirlos con otros desarrolladores, guárdelos en la base de datos (para archivos pequeños, es una buena opción). –

Cuestiones relacionadas