Download direkt weiterleiten
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
antworten
beispiel
benutzer
besten erledigen
betreffende datei
byte
code
datei
datum
dialog
externen server
header
http
megabyte
richtigen mime
server
type
warten
weiterleiten
weiterleitung
-
Hallo PHP-Freunde,
Ich habe eine Frage bezüglich PHP. Und zwar möchte ich ein Script schreiben, das von einem externen Server eine Datei herunterlädt und diese, ohne sie nochmal auf dem Server zwischenzuspeichern, direkt an den Benutzer weiterleitet.
Beispiel:
Die betreffende Datei ist unter http://example.org/datei.zip/ zu finden.
Das Script liegt z.B. auf http://lima-city.de/
Der Benutzer hat die IP 12.34.56.78
Nun soll das Script die Datei direkt an den Benutzer weiterleiten; im Browser des Benutzers soll sich also der ganz gewöhnliche Download-Dialog öffnen.
Ist das ohne weiteres mit PHP möglich, oder braucht man hierfür eine Scriptsprache wie Perl?
Ich freue mich auf alle Antworten
MfG mermadalis -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hallo,
<a href="http://example.org/datei.zip">Download</a>
Meinst du möglicherweise so etwas?
Warum solltest du sie auch auf dem eigenen Server zwischenspeichern wollen? Mit PHP wäre das, meines Wissens nach, nicht möglich. Einfach direkt auf die Datei verlinken (mit einem normalen Link, wie oben gezeigt) oder eine automatische Meta-, bzw. JS-weiterleitung einbauen.
Grüße
styVe (qap2-Team) -
wird das wahrscheinlich am besten erledigen. Dennoch wird der File auf dem Server zwischengespeichert, darum wirst du in keinem Fall herumkommen.echo file_get_contents(...)
-
@qap2:
Ich möchte ja, dass der Benutzer den Link nicht direkt zu sehen bekommt.
@nikic:
Wäre es nicht, z.B. mit Perl möglich, dass das Script die Datei beim Herunterladen von http://example.org/ bereits an den Benutzer weiterleitet?
Beispiel:
Die Datei http://example.org/datei.zip/ hat eine Größe von 100 Megabyte
Das Script lädt diese Datei nun runter und wenn 1 Megabyte auf dem Server gespeichert ist, wird dieser eine Byte direkt an den Benutzer weitergeleitet.
Ich möchte also verhindern, dass der Benutzer bei größeren Dateien erst warten muss, bis diese auf dem Server zwischengespeichert wurden, sondern der Server diese direkt an den Benutzer weiter "streamt". Ist das möglich? -
@mermadalis: Ja, genau das sollte mein recht einfacher Code machen (setzte bitte vorher über header() den richtigen MIME-Type), wenn du kein Outputbuffering aktiviert hast. (Hast du meistens nicht.) PHP wartet nicht bis zum Ende des Script um etwas aus zu geben.
-
Ich war längere Zeit nicht da und bin erst heute dazu gekommen zu antworten.
Leider funktioniert es nicht, wenn ich mit file_get_contents eine größere Datei anfordere, dauert es immer sehr lange, bis der Download gestartet werden kann.
Offenbar wartet PHP doch mit der Weiterleitung, bis alle Daten auf der Festplatte sind.
Du schreibst etwas von einem Outputbuffer. Wie genau kann man den denn deaktivieren, für den Fall, dass er aktiviert ist? -
Der Outputbuffer ist immer aus, sofern du ihn nicht via einer Funktion aktiver hast. Der brauchst du auch nicht.
Ja, der Download kann erst gestartet werden, wenn alle Dateien beim Server sind. Darum wirst du nicht drum herum kommen. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage