no
      
Langages
PHP
Perl
Html-Css
Javascript
Bdd (Mysql ...)
Forums
Ressources
Trucs,astuces
Mémos,tutoriaux
Outils-Logiciels
Scripts
 
Serveurs apache IIS
Sécurité
Référencement
Système exploitation
Informatique divers
Services
Générateur Metas
Testez vos Metas
Divers
Contacts
Signaler une erreur
Liste des scripts
Carte du site
Partenaires

Une question, un problème ? Venez en discuter sur le forum          Imprimer le document : Forcer le téléchargement d'un fichier.
 

Forcer le téléchargement d'un fichier.

 
 

Voici comment forcer téléchargement d'un fichier à l'aide du PHP.
Pour que le script fonctionne il ne faut pas d'instruction qui affiche quelques choses à l'écran avant les lignes header.

Sinon vous obtiendrez un message du style :
" Warning : Cannot modify header information - headers already sent by (output started at d:\creation\easyphp\www\_test\test.php:2) in d:\creation\easyphp\www\_test\test.php on line 3"


Par exemple créer un fichier" telecharger.php" avec comme contenu :


<?php

// on essaie de reconnaitre l'extension pour que le téléchargement corresponde au type de fichier afin d'éviter les erreurs de corruptions

switch(strrchr(basename($Fichier_a_telecharger), ".")) {

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_a_telecharger");
header("Content-Type: application/force-download");
header("Content-Transfer-Encoding: $type\n"); // Surtout ne pas enlever le \n
header("Content-Length: ".filesize($chemin . $Fichier_a_telecharger));
header("Pragma: no-cache");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0, public");
header("Expires: 0");
readfile($chemin . $Fichier_a_telecharger);
?>




Ensuite faire un fichier test.php ou test.html suivant ses préférences.

On appelle le fichier telecharger.php en passant en paramètre le nom du fichier à télécharger ainsi que le chemin.

<html>
<head>
<title>Forcer le téléchargement d'un fichier</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>

<?php
// Test du téléchargement d'un fichier avec reconnaissance du type de fichier
echo "<a href=\"telecharger.php?Fichier_a_telecharger=monfichier.txt&chemin=test/\">Télécharger</a>";
?>

</body>
</html>

Ou simplement si l'on ne veut utiliser que du html

<html>
<head>
<title>Test du téléchargement d'un fichier</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>

<a href="telecharger.php?Fichier_a_telecharger=monfichier.txt&chemin=test/">Télécharger</a>

</body>
</html>




suite de l'articlepage précédente
 
 

Une question, un problème ? Venez en discuter sur le forum 


Accueil   Php   Perl   Html-Css   Javascript   Base de données   Serveurs Sécurité  Référencement
Systèmes d'exploitation   Informatique général  Forums - Webblog - Actus
www.destrucsaweb.com   -  © 2002-2006 Tous droits réservés Hervé Lafragette

Quand le débutant est conscient de ses besoins, il finit par être plus intelligent que le sage distrait. ( Lao-Tseu)

<


sa88mirfhlaf  sa22mirfhlaf


Annuaire autos annuaire motos Cti

[


Temps d'exécution : 0.16409111022949