Impossibile scaricare il file in IE7 ma non ci sono problemi in Firefox, Chrome, ecc.?
-
02-07-2019 - |
Domanda
Ho uno script che riceve un URL crittografato e da cui genera un download, la parte più critica dello script è questa:
$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');
}
I download funzionano come in qualsiasi browser tranne IE, ho riscontrato problemi relativi alle intestazioni "no-cache" ma non invio nulla del genere, parlano di caratteri utf-8, ma non c'è nessun
Soluzione
Questo sito presenta un problema simile al tuo in IE6. Riassumendo:
session_start () per impostazione predefinita invia un'intestazione di controllo della cache che include " no-store " ;. Internet Explorer lo prende un po 'troppo alla lettera, ma non è appropriato gestione degli errori per il caso e, di conseguenza, esplode in modo criptico quando si tenta di salvare la pagina di output su disco.
Prima di session_start (), aggiungi " session_cache_limiter ('none'); " ;, oppure cerca che funzione e modificare il limitatore come appropriato (probabilmente "privato" è più vicino a il marchio).
Mi rendo conto che lo snippet di codice che hai pubblicato non include una chiamata a session_start ();
, ma ho pensato di condividere questa possibile soluzione nel caso in cui tu avessi una chiamata e semplicemente non ci mostri.
Altri suggerimenti
L'ho risolto inviando le intestazioni
header('Pragma: public');
header('Cache-Control: max-age=0');
Non sapevo che session_start () inviasse le intestazioni da solo.
Ho trovato la risposta nella sezione commenti di: Errore: Internet Explorer Impossibile scaricare FileName dal WebServer
Usa questo
Nel browser IE7 vai all'opzione internet - > sicurezza --- > download personalizzato --- > download quindi abilitato il prompt autometrico per il download dei file.
questo risolverà il problema.
spero che questo possa aiutare