Impossible de télécharger le fichier dans IE7, mais il n’ya pas de problème dans Firefox, Chrome, etc.?

StackOverflow https://stackoverflow.com/questions/117372

Question

J'ai un script qui reçoit une URL chiffrée et qui génère un téléchargement, le plus critique du script est le suivant:

$MimeType = new MimeType();
$mimetype = $MimeType->getType($filename);
$basename = basename($filename);
header("Content-type: $mimetype");
header("Content-Disposition: attachment; filename=\"$basename\"");
header('Content-Length: '. filesize($filename));
if ( @readfile($filename)===false ) {
  header("HTTP/1.0 500 Internal Server Error");
  loadErrorPage('500');
}

Les téléchargements fonctionnent comme un charme dans tous les navigateurs, à l'exception d'IE. J'ai rencontré des problèmes liés aux en-têtes "sans cache", mais je n'envoie rien de tel. Ils parlent de caractères utf-8, mais il n'y a pas de code. > Caractères utf-8 (et le $ filename n'a pas non plus de caractères utf-8).

Était-ce utile?

La solution

Ce site a un problème similaire au vôtre dans IE6. Pour résumer:

  

session_start () envoie par défaut un en-tête de contrôle de cache incluant "no-store".   Internet Explorer prend cela un peu trop au sens littéral, mais n'a pas approprié   gestion des erreurs pour le cas, et en conséquence explose de manière cryptique lorsque vous   essayez de sauvegarder la page de sortie sur le disque.

     

Avant session_start (), ajoutez " session_cache_limiter ('aucun'); '' ou recherchez-le   fonction et ajuster le limiteur selon le cas (probablement «privé» est plus proche de   la marque).

Je me rends compte que l'extrait de code que vous avez posté n'inclut pas l'appel de session_start (); , mais je pensais partager cette solution possible au cas où vous l'auriez appelé et que vous ne l'auriez pas fait. ne nous montre pas.

Autres conseils

Je l'ai résolu en envoyant les en-têtes

header('Pragma: public');
header('Cache-Control: max-age=0');

Je ne savais pas que session_start () envoyait des en-têtes par son propre moyen.

J'ai trouvé la réponse dans la section commentaires de: Erreur: Internet Explorer ne peut pas télécharger FileName à partir du Web Server

.

Utilisez ceci

Dans le navigateur IE7, accédez à l'option Internet - > sécurité --- > niveau personnalisé --- > téléchargements puis activé l’invite automatique pour le téléchargement de fichier.

cela résoudra le problème.

espérons que cela aidera

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top