Добавление панели загрузки, пока скрипт php готовит файл для скачивания - PullRequest
1 голос
/ 20 сентября 2011

Я новичок в php, но мне удалось создать страницу, которую я называю "welcome.php", которая берет ваше имя и фамилию из формы, затем помещает их в простой текстовый файл и отправляет вам обратно дляскачать:

<?php 
if ($_POST) {

    header("Content-Type: application/txt");
    header('Content-Disposition: attachment; filename="welcome.txt"');
    echo "Welcome, ";
    echo $_POST['firstName']. " " . $_POST['lastName']; 

    // exit the script to make the form not appear in the downloaded file
    exit;
}

?>

<form action="" method="post">
First Name:  <input type="text" name="firstName" /><br />
Last Name: <input type="text" name="lastName" /><br />
<input type="submit" name="submit" value="Submit me!" />
</form>

Я хочу добавить индикатор выполнения во время создания этого текстового файла, который достигает 100% при появлении диалогового окна «Сохранить файл».Я знаю , в этом случае время загрузки очень короткое, но позже я изменю его, чтобы сделать текстовые файлы намного большего размера.Мне было интересно, можете ли вы указать мне правильное направление или предоставить несколько строк кода, чтобы помочь, помня, что я изучаю php всего 2 дня.Я считаю, что вы можете использовать что-то под названием flush, но я не уверен, как интегрировать это в мою страницу.Спасибо!

Обратите внимание, что на моей странице также есть небольшая ошибка: текстовый файл также выводит html формы, кто-нибудь знает, как это остановить?

Ответы [ 2 ]

0 голосов
/ 20 сентября 2011

Вы можете использовать http://jqueryui.com/demos/progressbar/ это на основе JavaScript, и вы можете отправить свой прогресс через AJAX, как сказал Стефан.

0 голосов
/ 20 сентября 2011

На самом деле, PHP не предоставляет такую ​​возможность.

Чтобы показать прогресс-бар, вы можете попробовать это:

  • Выполняя длительный процесс создания файла, сохраните процентное значение в текущем пользовательском сеансе

  • На странице, которая показывает форму загрузки, добавьте iFrame , который вызывает progress.php script

  • Сценарий progress.php должен создать веб-страницу, которую нужно автоматически перезагружать

  • Сценарий progress.php должен прочитать текущее значение прогресса из сеанса и нарисовать графику индикатора выполнения , которая визуально представляет прогресс.

Хотя это решение предназначено только для PHP, вы вполне можете подготовить другое, используя JS / AJAX.

Автоматическая перезагрузка HTML должна выглядеть следующим образом:

<meta http-equiv="refresh" content="1; URL=http://myServer.com/progress.php">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...