Dateien werden im Browser geöffnet und nicht heruntergeladen

Bullet1990

Mitglied
Hallo Leute,

Ich hab eine kleine Website aufgebaut, auf der Files hoch- und heruntergeladen werden können.

Testweise hatte ich das ganze auf einem Webserver von einem Hoster.
Da die Website letztendlich auf einen Uni-Server muss, muss ich das ganze System auf den Uni-Server migrieren.
Daher kann man sicher sein, dass größtenteils alles lauffähig war, auf dem alten Server.

Nun stoße ich vor ein Problem beim Download. Um meine Website zu testen, verwende ich Firefox 32.0.3 (von der Uni aus). Vorher habe ich ebenfalls Firefox verwendet, aber von zu Hause aus.

Vorher lief das ganze so ab: Ich klicke auf einen Link, es öffnet sich der Download-Dialog von Firefox und ich kann entscheiden, ob ich die Datei öffnen oder herunterladen will.

Nun läuft das ganze so ab: Ich klicke auf den Link und die Daten wird im Browser geöffnet. Das soll aber nicht so sein, auch wenn Textdateien größtenteils korrekt angezeigt werden. Bei ZIP-Dateien wird dann der ganze kryptische Text angezeigt.

Weiß jemand, wie ich es erreichen kann, dass diese Files heruntergeladen, statt geöffnet werden?
Hab haufenweise Infos bei Google gefunden, aber die haben alle den umgekehrten Weg behandelt. Daher hat nichts davon geholfen.
Ich bin mir auch nicht sicher, ob das ein Firefox-Problem ist oder an meinem PHP-Code liegt oder an den Server-Einstellungen des neuen Servers den ich benutzen muss.

Das hier ist meine Download-Funktion, die bisher immer gut funktioniert hat.:

PHP:
function makeDownload($file, $dir, $type, $normalType)
{
    $fullFileName = $file.'.'.$normalType;

    header("Content_Description: File Transfer");
    header("Content-Type: $type");
    header("Content-Disposition: attachment; filename=\"$fullFileName\"");
    header("Content-Transfer-Encoding: binary");
    header("Expires: 0");
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");

    ob_clean();
    flush();
    readfile($dir.$file.'.'.$normalType);
    exit;
}

UPDATE:

Habe herausgefunden, dass es nicht am Browser liegt. Habe nochmal meine Website über den externen Webserver aufgerufen, die ich vorher programmiert hatte, und da wird der Download-Dialog geöffnet.
Entweder liegt es am Code oder, wie ich vermute, an der Server-Konfiguration.

EDIT:

Ich benutze einen Apache und XAMPP, falls die Info nützlich ist.
 
Zuletzt bearbeitet:
Vielleicht wird es header('Content-Type: application/octet-stream'); tun.

Musst im Zweifel sonst mal mit irgendeinem Tool gucken, welche Header dein Server tatsächlich sendet und ob das die sind, die du wolltest.
 
Die Firefox-Erweiterung Live HTTP Headers kann dir helfen, herauszufinden, was für Header an den Browser gesendet werden. Vermutung: Der Webserver (Apache) hat erkannt, dass es sich um einen bestimmten Mime-Typ handelt (z.B. die Erweiterung im Dateinamen) und entschieden, dass der Content-Type halt der passende zum Mime-Typ ist. Evtl. lässt sich ein solches Modul (z.B. mod_mime) mittels htaccess deaktivieren: http://httpd.apache.org/docs/2.2/mod/mod_mime.html#removehandler
 
Zurück