Download abbrechen
am 31.10.2006 10:00:23 von blauhutHallo allerseits,
ich verwende folgendes Skript um Downloads zu zählen:
function send_file($name) {
ob_end_clean();
if (!is_file($name) || connection_status()!=3D0)
return(FALSE);
set_time_limit(0);
header("Content-Type: application/zip");
header("Content-Length: " .(string)(filesize($name)) );
header('Content-Disposition: attachment; filename=3D"'.$name.'"');
if($file =3D fopen($name, 'rb')){
while( (!feof($file)) && (connection_status()==0) ){
print(fread($file, 1024*8));
flush();
}
fclose($file);
}
return((connection_status()==0) and !connection_aborted());
}
//*******************************
// Datei zum Client schicken
//*******************************
if (send_file("xyz.zip"))
{
log_download();
}
Das Skript funktioniert so wie es soll, die Datei wird richtig
heruntergeladen und der Download korrekt geloggt.
Wenn ich aber entweder den Dialog "Öffnen oder Speichern" abbreche
oder dann beim Speichern den "Speichern unter..."-Dialog schließe ohne
zu speichern wird zwar nichts auf die Platte geschrieben, das Skript
hat aber trotzdem einen korrekten Download geloggt.
Sieht also so aus, als würde die Datei schon direkt in einem Rutsch
mitgeschickt (sind nur ca. 70 kB). Gibt es eine Möglichkeit, den
Server dazu zu bringen nach dem Schicken der Header auf ein Signal des
Clients zu warten bevor die Datei in den Ausgabepuffer geschrieben
wird?
Gruß,
Thorsten