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");
Meinten Sie 'ByteArrayInputStream'? Sonst ist es logisch nicht möglich. –
@LukeLee es ist tatsächlich ausgegeben. Ich glaube, ich habe Code von InputStream aus OutputStream und umgekehrt gesehen. –
Ah, ich verstehe. Sie können die Bytes in den Stream geschrieben bekommen. –