Jonathan Beliën

Jonathan Beliën

Freelance Web Developer

« Spécialiste » en cartographie numérique
Membre du conseil d'administration d'OpenStreetMap Belgique
Membre du conseil d'administration d'Open Knowledge Belgique
Fan de LEGO et de bande-dessinées



PHP: Forcer le téléchargement d’un fichier

Publié le 29.07.2008

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.