Я не помню, чтобы когда-либо видел подробное руководство, объясняющее, как получить индикатор выполнения для загрузки с Zend Framework; но вот несколько советов, которые вам должны немного помочь, если вы уже знаете, что такое PHP, загрузка файлов и Zend Framework ...
Прежде всего, вам понадобится одно из двух установленных расширений PHP:
Это означает, что вы сможете получить такой индикатор выполнения, только если вы являетесь администратором своего сервера (такие расширения обычно не устанавливаются по умолчанию - и не используются на общем хостинге)
Затем вы должны использовать некоторые специальные «скрытые» поля в форме загрузки; об этом вы можете взглянуть на опции конфигурации APC ; особенно те, которые связаны с RFC 1867.
Если вы используете Zend Framework, я полагаю, вы уже используете Zend_Form_Element_File
в своей форме. Он уже должен делать то, что необходимо для этих полей - вам лучше это проверить, кстати, кстати.
Теперь, когда ваша форма в порядке, вы можете, наконец, взглянуть на Zend_ProgressBar
и на главу документации, которая описывает Ход загрузки файлов
Ваш код, вероятно, будет выглядеть примерно так (цитируя документ) :
$adapter = new Zend_ProgressBar_Adapter_Console();
$upload = Zend_File_Transfer_Adapter_Http::getProgress($adapter);
$upload = null;
while (!$upload['done']) {
$upload = Zend_File_Transfer_Adapter_Http:getProgress($upload);
}
И, чтобы регулярно получать эту информацию, вам нужно будет выполнить опрос с веб-страницы, используя какие-то запросы Ajax.
О расширении uploadprogress вы можете взглянуть на эти статьи:
Эти посты не предназначены специально для Zend Framework, но могут дать вам представление о том, что происходит; -)
Кстати, вы, вероятно, захотите протестировать все это на своем локальном компьютере, который проще в разработке ... И это будет означать, что загрузка файла действительно будет быстрой ; что не совсем хорошо для тестирования любого индикатора загрузки прогресса ...
Об этом вам может быть интересно "замедлить" интерфейс локальной сети; это может помочь:
Надеюсь, это поможет хоть немного ; -)
И, пока вы занимаетесь этим: почему бы вам не записать свои выводы в какое-то хорошее и подробное руководство? Это может быть полезно для некоторых людей ; -)