Problematik mit File-Download...

QUEST08

Erfahrenes Mitglied
Hallo,

ich bin derzeit dabei verschiedene Dateien zum download anzubieten. Normalerweise werden ja Dateien wie z.B. jpg, php, pdf usw. immer direkt angezeigt. ich verwende momentan folgenden code, um den download zu erzwingen:

PHP:
header("Content-Type: $type");
header("Content-Disposition: attachment; filename=".$file);
readfile($file);

Nun zu meiner Frage, können bei diesem 3-Zeiler irgendwelche Probleme auftreten?
Ich habe jetzt mehrere Dateitypen getestet und es scheint tatsächlich zu klappen, jedoch möchte ich mir hier schon zu 100% sicher sein, dass der download immer erzwungen wird.

Habe hier bereits einiges im Forum gefunden, wo immer für bestimmte typen eine lösung vorliegt, jedoch keine für alle dateitypen. Die Variablen $type und $file werden übrigens aus der DB ausgelesen.

Kann es hier zu konflikten kommen? Gibt es bessere Möglichkleiten?

Liebe Grüße!
 
Hallo Gumbo,

soll ich diesen Wert bei jedem Typ verwenden?
Ich dachte eigentlich, dass ich dort den eigentlichen Typ hinterlege z.B.:
application/pdf oder application/x-zip-compressed

Hab ich da was falsch gemacht?
 
Ich meine, dass es einige (ältere) Browser gibt, die den „Content-Disposition“-Header-Wert „attachment“ allein ignorieren und die Inhalte trotzdem darstellen, sollte es ein darstellbarer Typ sein. Deswegen bist du mit „application/octet-stream“ auf der sicheren Seite, da dieser per Definition genau dafür gedacht ist.
 
Hallo nochmal :-)

okay, dass heißt also:

Meine Variante würde zwar gehen, könnte jedoch ältere Browser dennoch
dazu bringen, die Datei anzuzeigen bzw. auszuführen.

Mit dem Part "application/octet-stream" wird im Prinzip immer dafür gesorgt,
dass die Datei herunter geladen wird und niemals angezeigt bzw. ausgeführt wird?

Ist das das sicherste, oder geht das noch sicherer? Oder kann ich mir bei
dieser Variante zu 100% sicher sein? :-)

lg
 
Der Typ „application/octet-stream“ bedeutet schlichtweg unbekannte Binärdaten und führt immer dazu, dass sie heruntergeladen werden.
 
Zurück