W większości przeglądarek samo okienko wcale nie oznacza niestety że plik nie był pobierany - on jest pobierany w tle praktycznie zawsze - kliknięcie anuluj jedynie przerywa ten proces.
Kliknięcie powoduje po prostu zawsze wystartowanie pobierania a user dalej decyduje o tym czy i gdzie dany plik zapisać - więc to nie działa tak jakbyś chciał. Każde kliknięcie to minimum rozpoczęcie pobierania.
Co do wykrycia czy user pobrał plik caly itd - to zależy od tego jak podajesz mu plik do pobrania.
- Czy jest to plik fizycznie na serwerze i użytkownik po prostu go pobiera z realnego adresu - wówczas trzeba zobaczyć jaki to serwer (pewnie apache) i poczytać o obsługiwaniu pobierania plików - jakie serwer daje eventy do obsługi tego w konfiguracji itd. Możliwe że da się skonfigurować go tak by po każdym pobieraniu (przerwanym czy nie) odpalał wskazany skrypt PHP wysyłając mu dane dotyczące pobieranego pliku. Jeśli tak się nie da trzeba obserwowac logi.
- Czy jest to plik wyrzucany userowi przez PHP - wtedy należy poczytać o funkcji ignore_user_abort oraz register_exit_function (czy jakoś tak) - ale to nie działa w stu procentach.
- Czy jest to plik znajdowany przez PHP i przerzucany do wysyłania przez serwer za pośrednictwem odpowiednich nagłówków (x-sendfile) - jeśli tak to obchodzi się z tym podobnie jak w przypadku pierwszym.
Tak czy inaczej zabawa raczej dla zaawansowanych - chyba że się znajdzie dobry artykuł na ten temat