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

Formation PHP à Lille (Nord)
Le langage PHP

Lorsque qu’on crée un lien hypertexte vers un fichier que l’on souhaite mettre à disposition pour le téléchargement, ce dernier à tendance à s’ouvrir dans le navigateur. Cela est parfois peu pratique, d’autant plus si le fichier est volumineux.

L’astuce consiste alors à convertir le fichier en une archive de type .zip ou .rar ou autres mais ce n’est pas toujours la solution la plus adéquate pour l’internaute qui télécharge le fichier.

De là, voici un petit script PHP qui force le navigateur de l’internaute à ouvrir une boite de dialogue pour lui demander ce qu’il souhaite faire du fichier en question.

 

<?php

$fichier = ‘monFichier.pdf’;

switch(strrchr(basename($fichier), ‘.’)) {

case ‘.gz’: $type = ‘application/x-gzip’; break;
case ‘.tgz’: $type = ‘application/x-gzip’; break;
case ‘.zip’: $type = ‘application/zip’; break;
case ‘.pdf’: $type = ‘application/pdf’; break;
case ‘.png’: $type = ‘image/png’; break;
case ‘.gif’: $type = ‘image/gif’; break;
case ‘.jpg’: $type = ‘image/jpeg’; break;
case ‘.txt’: $type = ‘text/plain’; break;
case ‘.htm’: $type = ‘text/html’; break;
case ‘.html’: $type = ‘text/html’; break;
default: $type = ‘application/octet-stream’; break;

}

header(‘Content-disposition: attachment; filename=’.$fichier);
header(‘Content-Type: application/force-download’);
header(‘Content-Transfer-Encoding: $typen’);
header(‘Content-Length: ‘.filesize($fichier));
header(‘Pragma: no-cache’);
header(‘Cache-Control: must-revalidate, post-check=0, pre-check=0, public’);
header(‘Expires: 0’);
readfile($fichier);

?>

 

Forcer le téléchargement d’un fichier avec PHP
Votez pour ce billet !

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *