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 utf-8 caratteri (e il nome $ non ha nemmeno caratteri utf-8).

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top