2013-12-03 3 views
1

Можно ли сказать, с уровня PHP или с JavaScript, что файл завершил загрузку в браузере пользователя?С PHP или JS, можем ли мы вообще сказать, если файл завершил загрузку на компьютере пользователя?

У меня есть метод PHP, который устанавливает заголовки, а затем readfile(). И мне нужно записать имя файла и время загрузки. Попытки, которые я сделал с просто протоколированием данных ПОСЛЕ чтения файла или fread, были неудачными - он записывал данные, но задолго до загрузки файла. Теперь я понимаю, что это потому, что эти методы выводят содержимое файла в буфер, а это значит, что следующая строка кода запускается после выхода файла, а не после завершения загрузки (исправьте меня, если это утверждение неверно).

Итак, есть ли способ достичь этого?

+1

от php, no. в лучшем случае вы можете сказать, когда последний байт был выпущен из передней двери PHP, например. 'ReadFile ('download.txt'); эхо «сделано!». когда вы закончите, файл readfile будет выполнен. но это просто означает, что PHP вытолкнул байты - он ничего не говорит о том, сколько из этих байтов фактически достигли клиентской машины. –

ответ

0

С помощью JS вы можете узнать, загружен ли браузер. Используя функцию jQuery ready (которая запускается только после того, как DOM, т. Е. Все элементы вашей страницы, полностью загружена), вы можете вызвать обратный вызов AJAX на ваш сервер, чтобы сообщить о завершенной загрузке браузера.

Невозможно сделать это с PHP, потому что вы можете знать только, отправлены ли данные, а не получены.

$(document).ready({ 
    // Trigger an AJAX call here 
}); 
+0

Извините, но где именно будет размещен этот код? – belinea

+0

Внутри страницы человек загружается. Вы должны уведомить их обозревателя, когда они будут сделаны. – Machavity

+0

Но в этом случае «страница» - это файл, не так ли? Файл можно продолжить загрузку в браузере после закрытия веб-сайта, с которого он был загружен. Также он может быть приостановлен и возобновлен через несколько часов. – belinea

Смежные вопросы