Bezdepbonusu7Программирование: статьи и ответы

Вопрос

С компонентом Primefaces fileUpload запускается ли событие, когда пользователь нажимает кнопку "Отмена"?

Автор вопроса: kz3Ответов: 1

Я использую Primefaces 3.0.RC1, и в форме у меня есть компонент <p:fileUpload mode="advanced" auto="true">. У него есть fileUploadListener, который записывает копию временного файла на диск.

Проблема в том (при загрузке файла все работает нормально), что если во время записи файла на диск пользователь нажимает кнопку "Отмена", файл уже может быть частично записан на диск, но мне нужно иметь возможность удалить это в тот момент. Возникает ли событие, когда пользователь нажимает кнопку "Отмена"?

РЕДАКТИРОВАТЬ. Чтобы уточнить, кнопка отмены все еще видна (и доступна для нажатия) во время выполнения обработчика события загрузки файла. Проблема заключается только в том, что пользователь нажимает кнопку "Отмена" на этом этапе. Нажатие кнопки "Отмена" во время загрузки файла на сервер - это нормально.

  • но fileUploadListener вызывается только в конце файла, загруженного пользователем, и прямо перед тем, как вы действительно сможете сохранить его в DB или FileSystem, поэтому, если пользователь нажмет кнопку Cancel, вы вообще не попадете в fileUploadListener .. . Daniel 12.03.2012
  • Primefaces отображает кнопку отмены до тех пор, пока не вернется fileUploadListener. Поэтому, пока я записываю файл на диск (после того, как файл загружен), кнопку отмены можно щелкнуть. Когда по нему щелкают, запись файла продолжается до тех пор, пока он не будет завершен, но мне нужно знать, была ли нажата кнопка отмены в это время, чтобы я мог удалить файл. kz3 12.03.2012
  • Две вещи: спрашивали ли вы на форуме Primefaces и почему вы не знакомы с текущим выпуском Primefaces? RC1 имеет множество проблем :) Jonathan S. Fisher 14.03.2012
  • К сожалению, мы приближаемся к завершению разработки сайта, и люди не хотят обновляться до более новой версии позже, потому что это единственная проблема, с которой мы сталкиваемся с PrimeFaces. Я еще не спрашивал на форуме PF, я сделаю это. kz3 14.03.2012
  • @ htrk123: Плохая идея. Разрабатывая старую, нестабильную и неполную версию, вы накапливаете технический долг, который очень быстро укусит вас под зад. Не игнорируйте этот совет, ожидая сочувствия и помощи. Distortum 15.03.2012
  • @SteveTaylor Я знаю, к сожалению, это не в моих руках, так как руководитель проекта решил не обновлять kz3 15.03.2012

javauploadjsfprimefaces

Ответы

Ответ 1 · рейтинг 1 · Yves Martin

Я рекомендую вам создать специальный временный каталог для приема файлов, загруженных благодаря параметру uploadDirectory FileUploadFilter в вашем web.xml:

<filter>
  <filter-name>PrimeFaces FileUpload Filter</filter-name>
  <filter-class>
    org.primefaces.webapp.filter.FileUploadFilter
  </filter-class>
  <init-param>
    <param-name>uploadDirectory</param-name>
    <param-value>/var/tmp/primefaces-upload</param-value>
  </init-param>
</filter>

Я предполагаю, что ваш код уже перемещает полностью загруженные файлы в определенное место.

Я предлагаю вам настроить обычное задание (например, с Quartz) для удаления любого файла старше одного часа (или настраиваемого тайм-аута) из каталога загрузки.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы