Buongiorno a tutti,
ho scritto un semplice script php che consente a un utente di effettuare il download di un file:

header('Content-Description: File Transfer');
header('Accept-Ranges: bytes');
header('Content-Length: ' . $dimensioneFile);
header('Content-Transfer-Encoding: binary');
header('Content-Type:' . $tipoMimeFile);
header('Content-Disposition: attachment; filename="' . $name . '"');
header("Cache-Control: no-cache, must-revalidate");

$readbytes = 0;

while (!feof($f)) {
$data = fread($f, 1024*8);
echo $data;
$readbytes += strlen($data);
}

fclose($f);

if($readbytes == $dimesioneFile){
// codice da eseguire se il file è stato scaricato
}


Il problema è che non so come capire se l'utente, quando gli compare la finestra pop-up per effettuare il download, invece di premere "ok" preme "annulla".
Ho provato a verificare se il numero di byte inviati è uguale a quelli di cui è composto il file, ma visto che il server continua a inviare i byte anche se l'utente non ha ancora premuto nessun tasto, non riesco a gestire il caso in cui l'utente aspetti il tempo necessario al server per inviare tutto il file e poi prema annulla, infatti in questo modo mi risulta che il file sia stato mandato completamente (e in effetti così è).
Posso in qualche modo impostare gli header in modo che mi mandi solo il primo blocco di byte e che per il resto aspetti la pressione del bottone "ok"?
Va bene anche qualsiasi altro metodo server-side.

Grazie in anticipo per l'attenzione.