2016-06-21 19 views
0

Ich habe im Web gesucht, kann aber kein Beispiel finden.Wie erstelle ich eine org.primefaces.model.UploadedFile aus einem org.apache.commons.io.output.ByteArrayOutputStream

Nachdem eine Instanz:

org.apache.commons.io.output.ByteArrayOutputStream 

Wie kann ich eine Instanz erhalten:

org.primefaces.model.UploadedFile 

Dank

+0

Meinten Sie 'ByteArrayInputStream'? Sonst ist es logisch nicht möglich. –

+0

@LukeLee es ist tatsächlich ausgegeben. Ich glaube, ich habe Code von InputStream aus OutputStream und umgekehrt gesehen. –

+0

Ah, ich verstehe. Sie können die Bytes in den Stream geschrieben bekommen. –

Antwort

1

UploadedFile ist eine Schnittstelle, und Sie können es einfach implementieren, indem ein Byte Einwickeln Array:

import org.primefaces.model.UploadedFile; 

import java.io.ByteArrayInputStream; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.InputStream; 

public class ByteArrayUploadedFile implements UploadedFile { 

    private final byte [] data; 

    private final String filename; 

    private final String contentType; 

    public ByteArrayUploadedFile(byte [] data, String filename, String contentType) { 
     this.data = data; 
     this.filename = filename; 
     this.contentType = contentType; 
    } 

    @Override 
    public String getFileName() { 
     return filename; 
    } 

    @Override 
    public InputStream getInputstream() throws IOException { 
     return new ByteArrayInputStream(data); 
    } 

    @Override 
    public long getSize() { 
     return data.length; 
    } 

    @Override 
    public byte[] getContents() { 
     return data; 
    } 

    @Override 
    public String getContentType() { 
     return contentType; 
    } 

    @Override 
    public void write(String filePath) throws Exception { 
     try (FileOutputStream fos = new FileOutputStream(filePath)) { 
      fos.write(data); 
     } 
    } 
} 

Die Schnittstelle dient zur Darstellung einer hochgeladenen Datei. Daher müssen zusätzliche Informationen wie Dateiname und Inhaltstyp angegeben werden.

Dann können Sie tun dies, um die Instanz von einem ByteArrayOutputStream zu erhalten:

ByteArrayOutputStream os = ...; 
UploadedFile uploaded = new ByteArrayUploadedFile(os.toByteArray(), "SomeFile", "application/octet-stream"); 
Verwandte Themen