Bonjour,
Depuis mon application web, je souhaite intégrer une fonction permettant de télécharger un fichier situé dans un autre emplacement de mon serveur.
Pour cela j'ai réalisé le script suivant:
Ce script fonctionne relativement bien a l'exception des cas suivants:
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
43
44
45
46
47
48 function detect_browser($var) { if(preg_match('/MSIE/', $var)) { $browser = "ie"; } else { $browser = ""; } return $browser; } // récupération du nom de fichier $file_name = $_GET['file']; // recréation du path complet $file_path = create_path($_SESSION['path']); if ( file_exists($file_path.$file_name) ) { $size = filesize($file_path.$file_name); header('Content-Description: File Transfer'); if(detect_browser($_SERVER['HTTP_USER_AGENT']) == "ie") { header('Content-type: application/force-download'); } else { header('Content-Type: application/octet-stream'); } header('Content-Transfer-Encoding: binary'); header('Content-Length: $size'); header('Content-Disposition: filename="'.$file_name.'"'); // open the file for reading and start dumping it to the browser if($fp = fopen($file_path.$file_name, "r")) { while(!feof($fp)) { echo fgets($fp, 4096); } // close the file fclose($fp); } } else { header("Location: ./index.php"); }
1) sous IE (8) le téléchargement ne fonctionne pas...
2) dans le cas d'un nom de fichier avec des espaces cela ne fonctionne pas nom plus...
J'ai pourtant appliqué ce que j'ai pu glaner sur le web, mais sans résultat
Si quelqu'un peut m'éclairer sur cela.
Partager