¿No se puede descargar el archivo en IE7 pero no hay ningún problema en Firefox, Chrome, etc.?

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

Pregunta

Tengo un script que recibe una URL cifrada y a partir de ahí genera una descarga, la parte más crítica del script es esta:

$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 de maravilla en cualquier navegador excepto IE, he visto problemas relacionados con encabezados 'sin caché' pero no envío nada de eso, hablan de caracteres utf-8, pero no hay ninguno. utf-8 characters(y el $filename tampoco tiene caracteres utf-8).

¿Fue útil?

Solución

Este sitio tiene un problema similar al tuyo en IE6.Para resumir:

session_start() envía de forma predeterminada un encabezado de control de caché que incluye "no-store".Internet Explorer toma esto demasiado literalmente, pero no tiene un manejo de errores adecuado para el caso, y como resultado explota crípticamente cuando intenta guardar la página de salida en el disco.

Antes de session_start (), agregue "session_cache_limiter ('none');", o busque esa función y ajuste el limitador según corresponda (probablemente 'privado' está más cerca de la marca).

Me doy cuenta de que el fragmento de código que publicaste no incluye una llamada a session_start();, pero pensé en compartir esta posible solución en caso de que recibas una llamada y simplemente no nos la muestres.

Otros consejos

Lo resolví enviando los encabezados.

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

No sabía que session_start() envía encabezados por sí solo.

Encontré la respuesta en la sección de comentarios de: Error:Internet Explorer no puede descargar el nombre del archivo desde el servidor web

Utilizar esta

En el navegador IE7, vaya a la opción de Internet-> Seguridad ---> Nivel personalizado ---> Descargas y luego habilitó la solicitud automática para la descarga de archivos.

Esto solucionará el problema.

Espero que esto ayude

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top