Téléchargement forcé en échec sur IE

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Téléchargement forcé en échec sur IE

Re: Téléchargement forcé en échec sur IE

par Invité » 27 août 2010, 15:42

Bonjour,

D'abord merci pour ta réponse. Cela m'a beaucoup aidé.
A l'étude de ce que tu m'as envoyé, je vois que le problème était issu des deux headers (pragma et cache-control).
En les enlevant et en laissant IE gérer, cela a fonctionné (j'ai virer l'expire par la même occasion avec un résultat concluant) sans me faire de dégradation sur les autres plateformes.

Merci.

Re: Téléchargement forcé en échec sur IE

par Skikit » 27 août 2010, 14:39

Salut, tu devrais essayer de cette façon :
ob_end_clean();
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.urlencode($s_FileD));
header('Content-Transfer-Encoding: none');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . $i_Taille);
ob_clean();
flush();
readfile($s_GlobPath);

Téléchargement forcé en échec sur IE

par jodeba66 » 27 août 2010, 10:24

Bonjour,

J'utilise un script de dowload classique de fichier du serveur vers un client PC (downlaod.php):

Code : Tout sélectionner

<? if( isset($_POST['download']) ){ $s_PathD = $_SERVER['DOCUMENT_ROOT'] . '/upload/' . $_POST['valC']; $s_FileD = $_POST['ListeFileD']; $s_GlobPath = $s_PathD . "/" . $s_FileD; if( !$s_FileD ) exit; /* Calcul de la taille */ $i_Taille = filesize( $s_GlobPath ); $type = "application/octet-stream"; break; header("Content-Type: application/force-download;name=$s_GlobPath "); header("Content-Transfer-Encoding:$type\n"); header("Content-Disposition: attachment;filename=$s_FileD"); header("Content-Length:$i_Taille"); header("Pragma: no-cache"); header("Cache-Control: no-cache, must-revalidate"); header("Expires: 0"); readfile($s_GlobPath ); } ?>
Ce code fonctionne sur Firefox, chrome, mais pas sur IE.
IE s'entete à vouloir télécharger le script (download.php) :
"Internet Explorer ne peut pas télécharger download.php de ...."

J'ai essayé divers pistes sans succés (chemins différents, changement de répertoire, ... ).
Les autres restent fonctionnels (???).
Quelqu'un aurait une idée ?
Merci d'avance pour vos retours.