2008-10-11 11 views
9

Mam stronę php, która obsługuje żądania pobierania plików. Muszę być w stanie wykryć, kiedy plik został pobrany pomyślnie. Jak to zrobić? Być może jest jakiś sposób na wykrycie tego klienta, a następnie wysłanie potwierdzenia na serwer.Jak wykryć, kiedy użytkownik zakończył pobieranie pliku w php

Dzięki.

Edit: przez uchwyt, to znaczy, że strona robi coś takiego:

$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); 

Odpowiedz

11

obsłużyć do pobrania w osobnym skrypcie PHP (lepiej zrobić trochę więcej niż tylko readfile($file); można również dostarczyć możliwość wznowienia pobierania jak w tym question). Następnie w tym skrypcie, po przeczytać ostatni blok i wysłać go, wiesz, że cały plik został wysłany. To nie to samo, co świadomość, że wszystko zostało odebrane, ale powinno wystarczyć dla większości scenariuszy.

4

Co Treb powiedział, ale powinienem dodać, że możesz sprawdzić, czy klient nadal nasłuchuje podczas pobierania z connection_status().

Nie zapomnij o flush() po zapisaniu danych do klienta, pomaga to w wykryciu, czy połączenie jest nadal aktywne.

Powiązane problemy