我正在使用primefaces组件上传文件。
public void handleFileUpload(FileUploadEvent event) {
UploadedFile file = event.getFile();
}
为了使应用程序进一步发展,我有一个必须使用的库提供的功能。此函数仅接受FileObject作为输入参数。
我如何将UploadedFile(原始字符)转换为FileObject(Apache Common)?
一种解决方法是将UploadedFile转换为文件,然后使用VFS.getManager()
及其功能将文件转换为FileObject。但是要做到这一点,我将不得不将文件保存在服务器上,并稍后再将其删除。
我正在寻找一种方法,可以将UploadedFile直接转换为FileObject。也许首先将其转换为字节数组?
很高兴获得所有建议。
答案 0 :(得分:1)
Apache Commons VFS supports many different 'virtual file systems',其中之一是'RAM',它不需要存储在基于真实磁盘的文件(系统)中
您可以像这样使用它(免责声明:未经测试)
public void handleFileUpload(FileUploadEvent event) {
UploadedFile file = event.getFile();
FileObject ram = VFS.getManager().resolveFile("ram:"+file.getFileName());
OutputStream os = ram.getContent().getOutputStream();
os.write(file.getContents());
ram.getContent().close();
// Use the ram FileObject
}
答案 1 :(得分:0)
也许最简单的解决方案是简单地构建FileObject
的自定义实现,该实现将FileUpload接收为构造函数参数,提取其InputStream的内容并按要求返回。
查看documentation以了解所需的方法。