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
merci de votre aide à tous.
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');
Partager