2008-09-22 9 views
5

Ich habe ein Skript, das eine verschlüsselte URL empfängt und dass ein Download erzeugt, ist der Kritiker par des Skripts:Datei kann nicht in IE7 heruntergeladen werden, aber es gibt kein Problem in Firefox, Chrome, etc ..? diese

$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'); 
} 

Downloads arbeitet als Charme in jedem Browser außer IE, ich habe ähnliche gesehen Probleme zu "no-cache" -Headers, aber ich sende nichts dergleichen, sie sprechen über utf-8 Zeichen, aber es gibt keine utf-8 characters (und der $ filename hat auch keine utf-8 characteres).

+0

"Es funktioniert außer in IE" ist überhaupt nicht hilfreich. Wie funktioniert es nicht? Gibt es eine Fehlermeldung? Eine Zeitüberschreitung? Zeigt es den Dateiinhalt an? Lädt es das falsche Ding herunter? – Jim

+0

Timeout im Grunde, es erscheint ein Download-Fenster, aber nie weiter, nach ein paar Minuten Timeouts sagen: "Internet Explorer kann FileName von WebServer nicht herunterladen" – levhita

Antwort

3

This site hat ein ähnliches Problem wie Ihres in IE6. Zusammenfassend:

session_start() sendet standardmäßig einen Cache-Steuerkopf mit "no-store". Internet Explorer nimmt dies ein wenig zu wörtlich, hat aber keine geeignete Fehlerbehandlung für den Fall, und als Ergebnis explodiert kryptisch, wenn Sie versuchen, die Ausgabeseite auf der Festplatte zu speichern.

Vor session_start() die Formulierung „session_cache_limiter (‚none‘);“, oder sehen, dass Funktion und optimieren den Begrenzer als angemessen (wahrscheinlich ‚privaten‘ näher an ist die Markierung).

ich den Code erkennen Snippet Sie hat geschrieben keinen Anruf zu session_start(); gehören, aber ich dachte, ich diese mögliche Lösung für den Fall, teilen würden Sie einen Anruf, um es zu tun haben und nur nicht uns zeigen.

+0

Ja, es gibt eine sessions_start() vor allem, ich poste nur diesen Code, weil ist ein sehr langer Code. – levhita

0

Use -> Sicherheit ---> Stufe anpassen ---> Downloads aktiviert dann automatische Aufforderung zum Herunterladen von Dateien.

Dies wird das Problem lösen.

hoffe das hilft

+0

Sie können nicht wirklich alle Ihre Benutzer bitten, das gleiche zu tun :) – Luk