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


http://twitter.com/H_Lafragette

 

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>





 
 

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)




Controle


Annuaire autosannuaire motos


zyzgjuj rttyjnboo seerrooppy Temps d'exécution : 0.11887717247009