Преобразование UploadedFile (простые лица) в FileObject (Apache Common) - PullRequest
0 голосов
/ 23 марта 2019

Я загружаю файл, используя компоненты primefaces.

   public void handleFileUpload(FileUploadEvent event) {
      UploadedFile file = event.getFile();
   }

Для дальнейшего развития приложения у меня есть функция, предоставленная из библиотеки, которую я должен использовать.Эта функция принимает только FileObject в качестве входного параметра.

Как я могу преобразовать UploadedFile (primefaces) в FileObject (Apache Common)?

Обходным решением будет преобразование UploadedFile в файла затем преобразовать файл в FileObject, используя VFS.getManager() и его функции.Но для этого мне нужно было бы сохранить файл на сервере и позже удалить его снова.

Я ищу способ, где я могу преобразовать UploadedFile напрямую в FileObject.Может быть, сначала преобразовав его в bytearray?

Рад всем советам.

Ответы [ 2 ]

1 голос
/ 26 марта 2019

Apache Commons VFS поддерживает множество различных «виртуальных файловых систем» , одной из которых является '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
}
0 голосов
/ 25 марта 2019

Возможно, самым простым решением было бы просто создать пользовательскую реализацию FileObject, которая получает FileUpload в качестве параметра конструктора, извлекает содержимое InputStream и возвращает их по запросу.

Посмотрите на документация для ознакомления с необходимыми методами.

...