我一直在网上搜索,但找不到任何示例。

具有以下一个实例:

org.apache.commons.io.output.ByteArrayOutputStream


我如何获得以下一个实例:

org.primefaces.model.UploadedFile


谢谢

最佳答案

UploadedFile是一个接口,您可以通过包装字节数组来简单地实现它:

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);
        }
    }
}


该界面用于表示上传的文件,因此我们需要提供其他信息,例如文件名和内容类型。

然后,您可以执行以下操作以从ByteArrayOutputStream获取实例:

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

关于java - 如何从org.apache.commons.io.output.ByteArrayOutputStream中创建org.primefaces.model.UploadedFile,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37955440/

10-10 01:04