Il m’arrive parfois de vouloir forcer le téléchargement d’un fichier plutôt que l’ouverture de celui-ci dans le navigateur. Exemple pour les fichiers texte (*.txt) ou image (*.jpg, …) ou PDF (*.pdf).
La méthode est la suivant, on appelle un script PHP qui en modifiant les entêtes de la page force le navigateur à proposer de téléchargé le fichier voulu.
Le script PHP en question appelle la fonction ci-dessous.
function download($file) {
$fsize = filesize($file);
$fname = basename($file);
header("Content-Type: application/force-download; name="" . $fname . """);
header("Content-Transfer-Encoding: binary");
header("Content-Length: " . $fsize);
header("Content-Disposition: attachment; filename="" . $fname . """);
header("Expires: 0");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
readfile($file);
exit(0);
}
La variable $file
est le chemin complet vers le fichier que l’on souhaite télécharger.