Bonjour à tous,

Je ne comprends pas pourquoi mon téléchargement forcé ne fonctionne pas.
J'espère qu'un membre va pouvoir m'aider.

J'ai essayé sur trois navigateur (IE 6, Firefox et IE 7), les deux premiers pas de problème mais avec IE 7 ça marche pas comme il faut.

Le fichier .php qui permet le téléchargemet forcé est téléchargé à la place du fichier que je veux atteindre dans mon code.

Alors si quelqu'un a une solution je suis à votre écoute.

Voici mon code

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
 
//on vérifie l'existance du fichier
if(file_exists($_SESSION['fichier'])){
$file = $_SESSION['fichier'];
$len = filesize($file);
 
//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($file, ".")){    
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 ".csv": $type = "text/csv"; break;
case ".htm": $type = "text/html"; break;
case ".html": $type = "text/html"; break;
default: $type = "application/octet-stream"; break;    
}
 
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public"); 
header("Content-Description: File Transfer")
 
//Utilisee le switch-generated Content-Type
header("Content-Type: ".$type);
 
//Force le téléchargement
$header="Content-Disposition: attachment; filename=".$file;
header($header );
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".$len);
readfile($file);
 
unset($_SESSION['fichier']);
}
else header('Location: index.php?table='.$_GET['n'].'/8ok');
merci de votre aide à tous.