Download über inkludierte Datei

Microhome

Erfahrenes Mitglied
Moin moin,
ich lade eine Datei über die Datei get.php herunter. Diese wird in index.php inkludiert, wenn $_GET["file"] gesetzt ist. Nun habe ich das Problem, dass meine heruntergeladene Datei die index.php bis zum include enthält. Sprich ich habe in jeder Datei HTML Code am Anfang und so werden exe Dateien natürlich unbrauchbar. Wenn ich die Datei direkt aufrufe, sprich get.php?file=xyz.exe dann t es weil ja keine Ausgabe vorher kommt. Mit ob_start() in der index.php hab ich es auch schon versucht, aber dann bekomme ich als Rückgabe in der downgeloadeten Datei nur den HTML Output und nichts weiter.

Habt ihr eine Idee



Besten Dank!
m!crohome
 
Verwendest du neben ob_start() auch ob_end_clean() vor dem Datei-Lesen und Senden? Wenn nicht solltest du so den bisherigen HTML Code im Puffer verwerfen.
 
Ich verwende in der get.php ein ob_flush(); und flush(); da ich die Dateien chunkweise lese. Ich lade die Datei also nicht komplett sondern in einer Art stream den ich zu einer beliebigen Zeit abbrechen kann.
 
Wenn du Flush() verwendest ist doch klar das er das was bisher im Objektbuffer war, also den HTML Code auch mit ausgibt.

Wenn du den Outputbuffer auch zum Download verwendest solltest du vor dem ersten Segment ob_clean() machen um den HTML Code rauszulöschen.
 
Danke für die Antwort. Hat soweit funktioniert aber jetzt ist noch der letzte Teil der HTML Seite mit in der Datei, warum


Danke dir!
m!crohome
 
Nach dem Versenden des Dateiinhalts kannst du das Skript beenden (exit), damit es keine weitere Ausgabe gibt.
 
Naja soll es aber, da ja bspw. der Footer auf der Seite noch angezeigt werden soll. Sonst wird die Seite ja lediglich halbfertig geladen..
 
Soll es nicht, wenn du die Header für einen Download sendest, wird die Seite wie sie davor angezeigt wird nicht verändert. Er empängt den Download und das wars.
Also mach ein die() oder exit() mit leeren Klammern direkt nachdem du die Files fertig gesendet hast. Sollte man generell immer tun wenn man Datedownloads durch PHP Piped, nicht das noch ein Leerzeichen oder anderes sich ans ende einschleicht und die Datei nicht mehr zu verwenden ist.

dem Hamster darf man Praktisch immer glauben ,)
 
Zurück