Yo uso la simple carga de Archivos de Primefaces en desarrollo con Netbeans. Mi ejemplo de prueba es similar a la Primefaces manual.
Mi pregunta: ¿de dónde viene el archivo subido en mi equipo local? ¿Cómo puedo cambiar la ruta de acceso? Thx!

El jsf archivo:

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.org/ui">
    <h:head>
        <title>Page test</title>
    </h:head>
    <h:body>
        Hello! My first JSF generated page!
        <h:form enctype="multipart/form-data">
            <p:fileUpload value="#{fileBean.file}" mode="simple" />
            <p:commandButton value="Submit" ajax="false"/>
        </h:form>

    </h:body>
</html>

y managed bean:

import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import org.primefaces.event.FileUploadEvent;
import org.primefaces.model.UploadedFile;


    @ManagedBean

@RequestScoped
public class FileBean {

    private UploadedFile file;

    public FileBean() {
    }

    public UploadedFile getFile() {
        return file;
    }

    public void setFile(UploadedFile file) {
        this.file = file;

    }
}

OriginalEl autor seinecle | 2012-08-06

2 Comentarios

  1. 19

    Se guardan de forma predeterminada en el contenedor de servlets de la memoria o de la carpeta temp, dependiendo del tamaño del archivo y el Apache Commons FileUpload de configuración (véase también «Configuración de Filtro» de la sección de la <p:fileUpload> capítulo en PrimeFaces Guía del Usuario).

    Usted no debe preocuparse acerca de todo esto. El contenedor de servlets y PrimeFaces saber exactamente lo que hacen. Usted debe en el botón de comando de acción del método en realidad guardar el archivo subido contenido a la ubicación donde que necesita. Usted puede obtener el archivo subido contenido como un InputStream por UploadedFile#getInputStream() o como un byte[] por UploadedFile#getContents() (conseguir un byte[] es potencialmente memoria caro en el caso de archivos de gran tamaño, usted sabe, cada byte come un byte de la JVM de memoria, así que no hagas que en el caso de archivos de gran tamaño).

    E. g.

    <p:commandButton value="Submit" action="#{fileBean.save}" ajax="false"/>

    con

    private UploadedFile uploadedFile;
    
    public void save() throws IOException {
        String filename = FilenameUtils.getName(uploadedFile.getFileName());
        InputStream input = uploadedFile.getInputStream();
        OutputStream output = new FileOutputStream(new File("/path/to/uploads", filename));
    
        try {
            IOUtils.copy(input, output);
        } finally {
            IOUtils.closeQuietly(input);
            IOUtils.closeQuietly(output);
        }
    }

    (FilenameUtils y IOUtils son de Commons IO que debe de todos modos ya se han instalado con el fin de obtener <p:fileUpload> a trabajar)

    Para generar nombres de archivo exclusivos, usted puede encontrar Archivo#createTempFile() centro de ayuda.

    String filename = FilenameUtils.getName(uploadedFile.getFileName());
    String basename = FilenameUtils.getBaseName(filename) + "_";
    String extension = "." + FilenameUtils.getExtension(filename);
    File file = File.createTempFile(basename, extension, "/path/to/uploads");
    FileOutputStream output = new FileOutputStream(file);
    //...
    Gracias, agradezco su ayuda! Llegué a la lógica y funcionaba.
    Eres bienvenido.

    OriginalEl autor BalusC

  2. -1

    He utilizado el modo simple, GlassFish 4.0 y PrimeFaces 4.0

    Backing Bean

    private UploadedFile file;
    private String destination="C:\temp\";
    
    public void upload() {
    
        System.out.println("uploading");
        if(file != null) {  
            System.out.println("the file is" +file);
            FacesMessage msg = new FacesMessage("Succesful" + file.getFileName() + " is uploaded.");  
            FacesContext.getCurrentInstance().addMessage(null, msg);  
    
            try {
               copyFile(file.getFileName(), file.getInputstream());
           }
           catch (IOException e) {
              e.printStackTrace();
           }
        }
        System.out.println("uploaf finished");
    }  
    
    public void copyFile(String fileName, InputStream in) {
        try {
            //write the inputStream to a FileOutputStream
            OutputStream out = new FileOutputStream(new File(destination + fileName));
    
            int read = 0;
            byte[] bytes = new byte[1024];
    
            while ((read = in.read(bytes)) != -1) {
                 out.write(bytes, 0, read);
            }
    
            in.close();
            out.flush();
            out.close();
    
            System.out.println("New file created!");
        } catch (IOException e) {
           System.out.println(e.getMessage());
        }
    }

    Página JSF

    <p:commandButton value="Submit" ajax="false" actionListener="#{staffController.upload}"/> 

    OriginalEl autor Khalifeez

Dejar respuesta

Please enter your comment!
Please enter your name here