De PHP-documentatie geeft een mooi voorbeeld:
<?php
$file = 'monkey.gif';
if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
exit;
}
?>
BEWERKEN (Reactie op opmerking, uitleg)
header('Content-Description: File Transfer');
Niet weergeven in de browser, maar het bestand overzetten.
header('Content-Type: application/octet-stream');
header('Content-Transfer-Encoding: binary');
Bestand is een binair bestand.
Browsers downloaden over het algemeen binaire bestanden, tenzij ze deze kunnen weergeven.
header('Content-Disposition: attachment; filename='.basename($file));
Zorg ervoor dat het downloaddialoogvenster de juiste bestandsnaam toont.
Opmerking:u kunt elke bestandsnaam gebruiken.
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
Bestand mag niet door de browser in de cache worden opgeslagen.
Cache kan problemen veroorzaken bij dynamische inhoud.
header('Content-Length: ' . filesize($file));
Stuur de juiste bestandsgrootte naar de browser,
anders kan de browser de overdrachtstijd niet inschatten.
ob_clean();
flush();
Zorg ervoor dat de headers naar de browser worden gestuurd voordat het downloaden begint.
readfile($file);
Stuur het bestand naar de browser.
exit;
Klaar :)