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

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

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

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


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


Ответы (1)


Я рекомендую вам создать специальный временный каталог для приема файлов, загруженных благодаря параметру 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) для удаления любого файла старше одного часа (или настраиваемого тайм-аута) из каталога загрузки.

person Yves Martin    schedule 16.03.2012
comment
Спасибо @YvesMartin, я полагаю, это нужно будет сделать, пока мы не перейдем к новейшей стабильной версии Primefaces в следующем месяце. - person kz3; 16.03.2012