php - para - internet explorer 7 windows xp 32 bits
¿No se puede descargar el archivo en IE7 pero no hay ningún problema en Firefox, Chrome, etc.? (3)
Tengo un script que recibe una url encriptada y de la que se genera una descarga, el par más crítico del script es este:
$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'');
}
Las descargas funcionan como encanto en cualquier navegador excepto IE, he visto problemas relacionados con encabezados ''no-caché'', pero no envío nada de eso, hablan de caracteres utf-8, pero no hay caracteres utf-8 characters
( y el $ filename no tiene ningún caracter utf-8 tampoco).
Lo resolví enviando los encabezados
header(''Pragma: public'');
header(''Cache-Control: max-age=0'');
No sabía que session_start () enviaba encabezados por su cuenta.
Encontré la respuesta en la sección de comentarios de: Error: Internet Explorer no puede descargar FileName desde WebServer
Utilizar esta
En el navegador IE7 vaya a la opción de Internet -> seguridad ---> nivel personalizado ---> descargas y luego habilite las solicitudes autométicas para la descarga de archivos.
Esto solucionará el problema.
espero que esto ayude
Este sitio tiene un problema similar al tuyo en IE6. Para resumir:
session_start () de forma predeterminada envía un encabezado de control de caché que incluye "no-store". Internet Explorer toma esto un poco demasiado literalmente, pero no tiene un manejo de error apropiado para el caso, y como resultado explota crípticamente cuando intentas guardar la página de salida en el disco.
Antes de session_start (), agregue "session_cache_limiter (''none'');", o busque esa función y modifique el limitador según corresponda (probablemente ''private'' esté más cerca de la marca).
Me doy cuenta de que el fragmento de código que publicó no incluye una llamada a session_start();
, pero pensé que compartiría esta posible solución en caso de que la llames y simplemente no nos muestres.