cs_derf4002
Messages postés23Date d'inscriptionjeudi 1 mai 2003StatutMembreDernière intervention13 janvier 2009
-
17 avril 2007 à 15:02
cs_derf4002
Messages postés23Date d'inscriptionjeudi 1 mai 2003StatutMembreDernière intervention13 janvier 2009
-
18 avril 2007 à 11:49
Bonjour,
Je suis en ce moment en train d'essayer de forcer le téléchargement d'un fichier sur mon site web. J'avais tout d'abord essayé en passant par une pop-up, mais ie bloquait tout. Je me suis donc pencher sur sans utiliser de pop-up, et là je suis arriver enfin à quelque chose qui marche sous IE Oui mais voilà, j'ai beau pouvoir récupérer mon fichier avec IE, sous Firefox et Opera c'est une autre histoire... Le fichier m'est proposé au téléchargement, mais ce que je télécharge ne contient pas du tout ce que ça devrait contenir... A la place j'ai juste le code html d'une jolie page d'erreur Si on pouvait me venir en aide...
Voici le contenu du fichier renvoyé par Firefox et Opera :
Warning: filesize() [function.filesize]: stat failed for backup_BDD_eole.sql; in C:\Documents and Settings\Utilisateur\Bureau\www\Eole\admin\gestionbdd\exporter.php on line 8
Warning: Cannot modify header information - headers already sent by (output started at C:\Documents and Settings\Utilisateur\Bureau\www\Eole\admin\gestionbdd\exporter.php:8) in C:\Documents and Settings\Utilisateur\Bureau\www\Eole\admin\gestionbdd\exporter.php on line 8
Warning: Cannot modify header information - headers already sent by (output started at C:\Documents and Settings\Utilisateur\Bureau\www\Eole\admin\gestionbdd\exporter.php:8) in C:\Documents and Settings\Utilisateur\Bureau\www\Eole\admin\gestionbdd\exporter.php on line 9
Warning: Cannot modify header information - headers already sent by (output started at C:\Documents and Settings\Utilisateur\Bureau\www\Eole\admin\gestionbdd\exporter.php:8) in C:\Documents and Settings\Utilisateur\Bureau\www\Eole\admin\gestionbdd\exporter.php on line 10
Warning: Cannot modify header information - headers already sent by (output started at C:\Documents and Settings\Utilisateur\Bureau\www\Eole\admin\gestionbdd\exporter.php:8) in C:\Documents and Settings\Utilisateur\Bureau\www\Eole\admin\gestionbdd\exporter.php on line 11
Warning: readfile(backup_BDD_eole.sql;) [function.readfile]: failed to open stream: No such file or directory in C:\Documents and Settings\Utilisateur\Bureau\www\Eole\admin\gestionbdd\exporter.php on line 12
Et voilà la partie du code concerné :
<?php
$Fichier_a_telecharger = $_GET['fichier'];
header("Content-disposition: attachment; filename=$Fichier_a_telecharger");
header("Content-Type: application/force-download");
header("Content-Transfer-Encoding: text/plain\n"); // Surtout ne pas enlever le \n
header("Content-Length: ".filesize($Fichier_a_telecharger));
header("Pragma: no-cache");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0, public");
header("Expires: 0");
readfile($Fichier_a_telecharger);
?>
A ce que je comprend, la fonction fileSize renvoie une erreur, ce qui a pour effet de bloquer tout les header qui suivent vu que du texte est renvoyé en sortie... Maintenant pourquoi la fonction filesize plante et pourquoi seulement sur les autres navigateurs que IE, là je vous pose la question...
vilhjalms
Messages postés591Date d'inscriptionmercredi 20 juillet 2005StatutMembreDernière intervention16 juillet 20092 17 avril 2007 à 15:36
Saell og blesuð
Essayez peut etre avec cela :
force-download.php
<?php
if(isset($_GET['file']) && !empty(trim($_GET['file'])){
$filename = $_GET['file'];
if(ini_get('zlib.output_compression'))
ini_set('zlib.output_compression', 'Off');
$file_extension = strtolower(substr(strrchr($filename,'.'),1));
}elseif (!file_exists($filename )){
echo '<html> ERROR: File not found. USE force-download.php?file=filepath </html>';
exit;
}else{
echo '<html>ERROR: download file NOT SPECIFIED. USE force-download.php?file =filepath</html>';
exit;
};
switch($file_extension){
case "pdf": $ctype="application/pdf"; break;
case "exe": $ctype="application/octet-stream"; break;
case "zip": $ctype="application/zip"; break;
case "doc": $ctype="application/msword"; break;
case "xls": $ctype="application/vnd.ms-excel"; break;
case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
case "gif": $ctype="image/gif"; break;
case "png": $ctype="image/png"; break;
case "jpeg":
case "jpg": $ctype="image/jpg"; break;
default: $ctype="application/force-download";
}
cs_derf4002
Messages postés23Date d'inscriptionjeudi 1 mai 2003StatutMembreDernière intervention13 janvier 2009 17 avril 2007 à 15:58
.... en fait non
J'ai essayé ton truc et ca marche toujours pas... voilà ce que j'ai maintenant dans mon fichier :
Warning: filesize() [function.filesize]: stat failed for backup_BDD_eole.sql; in C:\Documents and Settings\Utilisateur\Bureau\www\Eole\admin\gestionbdd\exporter.php on line 48
Warning: Cannot modify header information - headers already sent by (output started at C:\Documents and Settings\Utilisateur\Bureau\www\Eole\admin\gestionbdd\exporter.php:48) in C:\Documents and Settings\Utilisateur\Bureau\www\Eole\admin\gestionbdd\exporter.php on line 48
Warning: readfile(backup_BDD_eole.sql;) [function.readfile]: failed to open stream: No such file or directory in C:\Documents and Settings\Utilisateur\Bureau\www\Eole\admin\gestionbdd\exporter.php on line 49
D'ailleurs il y avait une erreur de plus dans ce que tu m'as donné, je ne pouvais faire un test avec empty directement sur ce que me retournait la fonction trim sans passer au préalable par une variable Bref détail, ça ne marche toujours pas Enfin si, sous IE, ta méthode fonctionne aussi... Apparement se serait au niveau du chemin du fichier que ça plante... mais pk ? et pk pas sous IE ? l'inverse m'aurait pas étonné mais là... Help