[PHP] Problème Force Download version IE [Fermé]

jissé - 3 janv. 2008 à 14:13 - Dernière réponse :  linlin31
- 15 févr. 2008 à 10:23
Bonjour,

Je développe un site web de partage de fichiers, et les utilisateurs qui s'y rendent doivent pouvoir
télécharger les fichiers qu'ils souhaitent par un clic sur un lien du type:
<a href="telechargement.php?chemin_fichier=$chemin_fichier&nom_fichier=$nom_fichier">

Pour le téléchargement, ca va ca fonctionne à la fois sous Firefox et différentes version d'IE de la 6 à la 7.0.6
Mais lors de l'ouverture de la fenêtre de téléchargement, si on choisi d'ouvrir le fichier, et non de le télécharger,
le script plante pour certaines version d'IE (la 6.0.2800 par ex.).

Je mets ci-dessous le code correspondant:

$fichier_chemin = $_GET["fichier_chemin"];
$nom_fichier = $_GET["fichier_nom"];
$nom_fichier_nospace = strtr($nom_fichier," ","_");

//test sur le navigateur
if (eregi('MSIE: space :+[0-9]+\.[0-9]+', $_SERVER["HTTP_USER_AGENT"])) {
header('Content-Type: application/force-download');
header("Content-Transfer-Encoding: application/octet-stream\n");
header('Content-Disposition: attachment; filename="' . $nom_fichier_nospace . '"');
header("Content-Length: ".filesize($fichier_chemin));
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
} else {
header('Content-Type: application/force-download');
header("Content-Transfer-Encoding: application/octet-stream\n");
header('Content-Disposition: attachment; filename="' . $nom_fichier_nospace . '"');
header("Content-Length: ".filesize($fichier_chemin));
header('Expires: 0');
header('Pragma: no-cache');
}
//On ouvre le fichier sur le serveur
$download_file = fopen($fichier_chemin, "r");
//On ouvre la fenêtre de téléchargement du navigateur
fpassthru($download_file);


Voila, donc si quelqu'un pourrait m'aider ca serait sympa, je ne sais pas ou se trouve l'erreur, si c'est dans l'ordre des headesr ou un manque d'infos dans les déclarations des headers.
A noter également que le type d'encodage de la page est l'UTF-8, mais je ne pense pas que cela vienne de ca vu que le Firefox et l'IE que j'utilise pour mes tests sont en ISO et ca fonctionne tres bien...

Merci pour votre aide.
Afficher la suite 

1 réponse

0
Utile
Bonjour,

Il suffit de supprimer les lignes :

header('Expires: 0') ; header('Pragma:...