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

Dance cet article nous allons voir comment forcer le navigateur à télécharger un fichier (n’importe lequel) au lieux de l’ouvrir. Pour cela nous allons utiliser les Headers qu’envoie le serveur au navigateur (fonction header de php).

Voici le code a utiliser :

 //date actuelle
$date = gmdate('D, d M Y H:i:s');

header("Content-Type: text/xml"); //Ici par exemple c'est pour un fichier XML, a changer en fonction du type mime du fichier voulu.
header('Content-Disposition: attachment; filename=NOM_FICHIER.xml');
header('Last-Modified: '. $date . ' GMT');
header('Expires: ' . $date);
//header specifique IE :s parce que sinon il aime pas
if(preg_match('/msie|(microsoft internet explorer)/i', $_SERVER['HTTP_USER_AGENT'])){
  header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
  header('Pragma: public');
}else{
  header('Pragma: no-cache');
}

echo $CONTENU_DE_NOTRE_FICHIER; // ou readfile('CHEMIN_FICHIER'); En fonction du type de fichier.

Le type Mime doit être celui du fichier qu’on veut pouvoir télécharger (liste des types mime disponibles). En voici quelques exemples :

image GIF : image/gif
fichier XML : text/xml
fichier rtf : application/rtf
fichier avi : video/msvideo

Maintenant à vos fichiers dl.php ;-)

1 Etoile2 Etoiles3 Etoiles4 Etoiles5 Etoiles (9 votes, note : 4.44 sur 5)

Catégories : PHP / MySQL, Programmation

3 commentaires pour “Forcer le téléchargement d’un fichier avec PHP”

  1. Krys dit :
    Le 23/04/2008 à 13:55:39

    Fonctionne vraiment bien merci ;)

  2. Jean55 dit :
    Le 01/11/2008 à 12:53:28

    Très intéressant, merci beaucoup.

  3. eric dit :
    Le 05/11/2008 à 10:57:31

    Merci!
    Je cherchais depuis un moment comment faire pour que cela marche sous IE!

Laisser un commentaire

Archives :

| décembre 2008 (1) | octobre 2008 (2) | septembre 2008 (3) | mai 2008 (1) | mars 2008 (4) | février 2008 (3) | décembre 2007 (16) | novembre 2007 (2) | juin 2007 (1) | mai 2007 (2) | avril 2007 (1) | mars 2007 (2) | février 2007 (1) | janvier 2007 (3) |
© 2009 Naeh.net | Thème par DemusDesign (Modifié par Naeh), Theme Lab | Powered by WordPress

Naeh.net