OVH Cloud OVH Cloud

probleme de header

15 réponses
Avatar
Demosthene
Bonjour à tous,


Je propose le téléchargement d'un fichier *.txt hors du navigateur.

Après recherche de mon problème sur google, j'ai corrigé mes entêtes :

header("Cache-Control: public");
header("Content-Description: File Transfer");
//header("Content-disposition: attachment; filename=Blabla");
header("Content-Type: application/octet-stream");
header("Content-Transfer-Encoding: binary");
//header("Content-Length: 10000");
header("Pragma: no-cache");
header("Cache-Control: no-store, no-cache, must-revalidate,
post-check=0, pre-check=0");
header("Expires: 0");


J'ai commenté deux lignes car mon fichier est généré à la volée.
Je ne connais pas a priori la longueur.

Celà a toujours marché avec Firefox mais jamais sous IE, il génère une
erreur :
"IE n'a pas pu ouvrir ce site Internet. Le site n'est pas disponible ou
n'a pas pu être trouvé. Réessayez ultérieurement"

Y-a-t-il une subtilité qui m'échappe ?

Connaissez-vous un site de référence traitant de la question ?
php.net ne contient pas grand chose sur le sujet

Merci à l'avance pour toute piste.


Démosthène

5 réponses

1 2
Avatar
Demosthene

d'autre part ayant réalisé cette fonction, je me souviens qu'il
était nécessaire de faire un traitement legerement différent
en fonction du navigateur. ($_SERVER["HTTP_USER_AGENT"])




merci pour ce script. manifestement, il y a à la base un problème de
transfert à cause d'un environnement ssl. je suis en train de le régler
avec le responsable technique et revient dès que celà marche.

Dans mon post initial, je demandais si l'un d'entre vous connaissait un
cours en ligne au sujet des headers ?

Un grand merci à toutes ces bonnes âmes

Démosthène


Avatar
Marc

merci pour ce script. manifestement, il y a à la base un problème de
transfert à cause d'un environnement ssl. je suis en train de le régler
avec le responsable technique et revient dès que celà marche.


nous avons au niveau de notre intranet le meme soucis avec ssl et IE.
je repondrais demain ; me rappeler si oublis.

Avatar
Demosthene
nous avons au niveau de notre intranet le meme soucis avec ssl et IE.
je repondrais demain ; me rappeler si oublis.


Vous avez oublié ?

L'admin du serveur m'a proposé de retarder l'envoi des données.
J'ai tenté "ob_flush" au début et "ob_end_flush" à la fin : sans succès.
Auriez-vous avancé voire résolu votre problème ?

Cordialement Démosthène

Avatar
__marc.quinton__
Marc wrote:

merci pour ce script. manifestement, il y a à la base un problème de
transfert à cause d'un environnement ssl. je suis en train de le régler
avec le responsable technique et revient dès que celà marche.



nous avons au niveau de notre intranet le meme soucis avec ssl et IE.
je repondrais demain ; me rappeler si oublis.


voila : la chose importante ici pour IE :
header("Pragma: ");
et header("Cache-Control: ");


// send header for http protocole ;
// take care of options : ( force download mode)
// get mime type and convert it to an predictible one (Mime::convert())
// if navigator is IE send a special header.
//
function _send_header($opts) {

$fullpath = $this->fullpath();
$orig = $this->nom_fichier_orig();
$mime = $this->mime();

$mime = Mime::convert($mime);

// special care for IE ...
if(strpos($_SERVER["HTTP_USER_AGENT"], 'MSIE')){
// IE cannot download from sessions without a cache
header("Pragma: ");
header("Cache-Control: ");
}

if(preg_match("/download/i", $opts)) {
header("Content-type: application/data");
header("Content-Disposition: attachment; filename=$orig");
# header("Content-length:".(string)(filesize($fullpath)));
} else {
header("Content-type: $mime");
# header("Content-length:".(string)(filesize($fullpath)));
}
}


Avatar
Demosthene
voila : la chose importante ici pour IE :
header("Pragma: ");
et header("Cache-Control: ");


Mille Mercis ;)

La version minimum suivante fonctionne parfaitement dans mon
environnement appache ssl ;)
Vous me tirez d'ambarras.

header("Content-disposition: attachment; filename="blabla.txt");
header('Content-Type: application/text/plain');
header("Pragma: ");
header("Cache-Control: ");

Cordialement Démosthène

1 2