Sowas solltest du nicht mit einem simplen readfile() machen, das zieht die ganze Serverperformance runter, weil der Server versucht die Datei "in einem Stück" zu übergeben.
Nimm das:
PHP-Code:
function sendFileToBrowser($filelocation = NULL, $filename = NULL, $org_filename = '', $ctype = 'application/octet-stream', $download = FALSE){
/*
=============================================================================
@desc: Sendet eine Datei zum Herunterladen an den Browser
@version: Tue, 30 Sep 2008 17:33:55 +0200
@changed: Erweitert um Angabe für den "richtigen" Dateinamen
=============================================================================
*/
// Kein Originalname übergeben? Dann nehmen wir den Dateinamen
if($org_filename == ''){
$org_filename = $filename;
}
// Soll die Datei zum Download angeboten werden?
if($download === TRUE){
header('Pragma: public');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Content-Transfer-Encoding: binary');
header('Content-Disposition: attachment; filename=' . $org_filename . ';');
}
header('Content-Type: ' . $ctype);
header('Content-Length: ' . filesize($filelocation . $filename));
// readfile($filelocation . $filename);
$file = fopen($filelocation . $filename, "r");
while(!feof($file) and (connection_status()==0)) {
print(fread($file, 1024*8));
flush();
}
fclose($file);
die();
}
Sollte eigentlich selbsterklärend sein