У меня очень простой и стандартный скрипт загрузки PHP-скриптов.
Как проверить, завершилась ли загрузка, чтобы уведомить пользователя на стороне клиента? Мне даже не нужно показывать прогресс в реальном времени, меня интересует только конкретное событие: «когда загрузка завершена». Основываясь на моих исследованиях, кажется, что это нужно было бы определить с помощью сервера, поскольку нет события ondownloadready
и я не думаю, что можно перехватить события браузера.
Поэтому мне кажется, что лучше всего было бы сравнить байты, отправленные в общие байты, с каким-то взаимодействием клиентов / севера. Как я могу проверить байты, отправленные с сервера, для принудительной загрузки PHP? есть ли какая-то глобальная переменная PHP, которая хранит эти данные, которые я могу выполнить с помощью AJAX?
<?php header("Content-Type: video/x-msvideo"); header("Content-Disposition: attachment; filename=\"".basename($realpath)."\";"); ... $chunksize = 1 * (1024 * 1024); // how many bytes per chunk if ($size > $chunksize) { $handle = fopen($realpath, 'rb'); $buffer = ''; while (!feof($handle)) { $buffer = fread($handle, $chunksize); echo $buffer; ob_flush(); flush(); } fclose($handle); } else { readfile($realpath); } exit(); ?>
Причина, по которой мне это нужно:
Для проекта, над которым я работаю, требуется, чтобы после начала загрузки страница перенаправляла (или отображает) страницу «Подождите, пока загрузка завершена». Затем, как только он будет завершен, он должен перенаправить (или отобразить) страницу «Ваша загрузка завершена, спасибо». Я открыт для других идей, которые достигнут того же результата.
Ознакомьтесь с этой страницей сайта Sitepoint, которая описывает решение.
В принципе, как только цикл while прерывается, все готово!
Вот полный поток, который описывает использование опроса AJAX для обнаружения, когда загрузка завершена: http://www.sitepoint.com/forums/showthread.php?t=618233