Как определить, когда пользователь успешно завершил загрузку файла в php - PullRequest
9 голосов
/ 12 октября 2008

У меня есть страница php, которая обрабатывает запросы на загрузку файлов. Мне нужно быть в состоянии определить, когда файл был успешно загружен. Как это может быть сделано? Возможно, есть какой-то способ обнаружения этой клиентской стороны и отправки подтверждения на сервер.

Спасибо.

Edit: Под ручкой я имею в виду, что страница делает что-то вроде этого:

$file = '/var/www/html/file-to-download.xyz';
  header('Content-Type: application/octet-stream');
  header('Content-Length: ' . filesize($file));
  header('Content-Disposition: attachment; filename=' . basename($file));
  readfile($file);

Ответы [ 2 ]

11 голосов
/ 12 октября 2008

Обработайте загрузку в отдельном php-скрипте (лучше сделать немного больше, чем просто readfile($file);, вы также можете предоставить возможность возобновления загрузки, как в этом вопросе ). Затем в этом сценарии, когда вы читаете последний блок и отправляете его, вы знаете, что весь файл был отправлен. Это не то же самое, что знать, что все было получено, но этого должно быть достаточно для большинства сценариев.

4 голосов
/ 13 октября 2008

То, что сказал Треб, но я должен добавить, что вы можете проверить, все еще ли клиент слушает во время загрузки, с помощью connection_status () .

Не забудьте flush() после того, как вы записали данные клиенту, это поможет определить, все ли соединение установлено.

...