Стандартный HTML <input type="file">
уже не может это сделать. Таким образом, <t:inputFileUpload>
, который просто отображает именно этот элемент HTML, не подлежит сомнению. Кроме того, Flash также не позволяет выбирать папки из-за ограничений безопасности. Итак, о <rich:fileUpload>
также не может быть и речи.
Ваш лучший выбор - использовать Java-апплет, который использует Swing JFileChooser
, который позволяет вам выбрать каталог. Затем можно написать некоторый код Java, который собирает все файлы в этой папке и загружает его на серверную сторону с помощью URLConnection
или HttpClient . Затем вы просто встраиваете этот апплет в свою JSF-страницу обычным простым HTML / JS-способом. Вместо того, чтобы заново изобретать колесо апплета, вы также можете использовать существующий сторонний апплет, такой как JumpLoader или JUpload . Оба поддерживают загрузку целых каталогов.
Наконец, вы должны интегрировать его в сочетании с простым ванильным сервлетом, использующим Apache Commons FileUpload для анализа запросов на загрузку файлов из апплета. Чтобы позволить ему взаимодействовать с JSF, вы можете сохранить какой-то уникальный атрибут в сеансе или использовать управляемый компонент JSF в рамках сеанса, который также доступен в сервлете. Я не уверен, поддерживает ли JumpLoader или JUpload это, но технически возможно позволить апплету обновить страницу с помощью JavaScript (что позволяет осуществлять связь applet-JSF с помощью JS / Ajax).
Нет, не приходит в голову какой-либо сторонний компонент JSF, который выполняет ту же работу.