Impossible de télécharger le fichier dans IE7, mais il n’ya pas de problème dans Firefox, Chrome, etc.?
-
02-07-2019 - |
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).
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