В настоящее время я просматриваю способ отображения статуса загрузки файла на странице. Я знаю, что это не требуется, поскольку пользователь обычно имеет статус загрузки в браузере, но я хотел бы сохранить пользователя на странице, которую он загружает, до тех пор, пока загрузка длится долго. Для этого статус загрузки должен соответствовать статусу, который на самом деле имеет файл (а не поддельная панель програмы). Возможно, он также отображает скорость, которую пользователь загружает, и оценивает время, которое потребуется, в зависимости от текущей скорости загрузки.
Можно ли это сделать с помощью PHP и Javascript? Или это действительно требует Flash или Java?
Разве где-то на сервере не должно быть информации о том, кто скачивает, на какой скорости и сколько?
Благодарим вас за помощь.
Не совсем возможен кросс-браузер, но посмотрите на http://markmail.org/message/kmrpk7w3h56tidxs#query:jquery%20ajax%20download%20progress+page:1+mid:kmrpk7w3h56tidxs+state:results для довольно близких усилий , IE (как обычно) является основным виновником не играть в мяч.
Вы можете сделать это с двумя отдельными файлами php, первым файлом для загрузки. Вроде как:
$strtTime=time(); $download_rate=120; //downloading rate $fp = fopen($real, "r"); flush();// Flush headers while (!feof($fp)) { $downloaded=round($download_rate * 1024); echo fread($fp,$downloaded ); ob_flush(); flush(); if (connection_aborted ()) { // unlink("yourtempFile.txt" ; exit; } $totalDw +=$downloaded; // file_put_contents("yourtempFile.txt", "downloaded: $totalDw ; StartTime:$strtTime"); sleep(1); } fclose($fp); // unlink("yourtempFile.txt") ;
Второй файл будет использоваться для чтения yourtempFile.txt Ajax continusly. Использование сеансов и файлов cookie не будет использоваться из-за начала печати.