java - 如何从 org.apache.commons.io.output.ByteArrayOutputStream 创建 org.primefaces.model.UploadedFile

标签 java

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

有一个实例:

org.apache.commons.io.output.ByteArrayOutputStream

我怎样才能获得一个实例:

org.primefaces.model.UploadedFile

谢谢

最佳答案

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

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

该接口(interface)用于表示上传的文件,因此我们需要提供文件名和内容类型等附加信息。

然后您可以执行此操作以从 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/

相关文章:

java - 如果定义了时区,则 Calendar.getTime() 不返回 UTC 日期

java - Netbeans 给我一条错误消息,但它按我想要的方式工作

java - 如何让两个线程同时工作

java - 来自外部 jar 的 seam i18n 属性文件

Java继承。有趣的事情

Java List.SubList() 性能比较

java - 仅从 Gmail 获取邮件 header

java - 当字符串大时,两个字符串的 XOR 不起作用

java - 构建词性标注器(词性标注器)

java - 任何增加 Rational Clearcase 远程客户端内存设置的方法