Ответ 1
Вы можете загрузить содержимое загруженного файла через FileUploadEvent
. В PrimeFaces 4.x с Apache Commons FileUpload или в PrimeFaces 5.x с параметром context primefaces.UPLOADER
, установленным на commons
, вы можете использовать UploadedFile#getContents()
для получения загруженного файла как byte[]
.
public void handleFileUpload(FileUploadEvent event) {
byte[] content = event.getFile().getContents();
// ...
}
В PrimeFaces 5.x с параметром context primefaces.UPLOADER
отсутствует или установлен на auto
или native
при использовании JSF 2.2, тогда getContents()
вернет null
как не реализовано в реализации NativeUploadedFile
. Вместо этого используйте UploadedFile#getInputStream()
, а затем прочитайте байты из него, например. с помощью общих долей IO.
public void handleFileUpload(FileUploadEvent event) {
byte[] content = IOUtils.toByteArray(event.getFile().getInputstream());
// ...
}
Наконец, просто установите этот byte[]
в свой объект и сохраняйте/объедините его.
Убедитесь, что тип кодировки формы установлен на multipart/form-data
, а при использовании Apache Commons FileUpload, который вы настроили фильтр загрузки файлов в web.xml
в соответствии с руководством пользователя PrimeFaces.