2008-09-17 6 views
20

Ich kann nicht viel Dokumentation auf X-Sendfile oder Beispielcode für PHP finden (es gibt einige Schienencode).Verwendung von X-Sendfile mit Apache/PHP

Wer hat es schon mal benutzt und würde gerne einen kurzen Code-Ausschnitt und eine kurze Beschreibung geben?

Antwort

27

X-Sendfile ist ein HTTP-Header, so dass Sie wollen etwas wie folgt aus:

header("X-Sendfile: $filename"); 

Ihr Webserver nimmt es, wenn es richtig konfiguriert werden. Hier einige weitere Details:

http://www.jasny.net/articles/how-i-php-x-sendfile/

+0

Ich folgte dem Tutorial auf den Link, aber wenn ich Datei mit mod-xsend herunterladen, bekomme ich Dateigröße Binärdatei (0 Bytes) ... Was mache ich falsch? UPDATE: habe es selbst herausgefunden. Ich musste "#enable sending files from elderly dirs" hinzufügen -> 'XSendFileAllowAbove On' in meine .htaccess-Datei, sice meine Downloads sind aus dem Webroot-Ordner. –

+3

Für zukünftige Leser: XSendFileAllowAbove ist veraltet; Verwenden Sie XSendFilePath – Oli

2

Wenn zwicken den Web-Server-Konfiguration nicht möglich ist, prüfen Standard readfile() function PHP. Es wird nicht so schnell wie sendfiling sein, aber es wird breiter kompatibel sein. Beachten Sie auch, dass Sie dabei mindestens einen Content-Type-Header senden sollten.

+0

Bitte beachten Sie, dass Sie, wenn Sie 'readfile()' verwenden, keine Unterstützung für die Fortsetzung oder teilweise Downloads (Request-Range) oder Client-Caching (dh eine 304 nicht geändert, wenn nötig) zurückgeben Sie müssen all dies selbst mit PHP-Code handhaben - es sollte einige Code-Snippets geben, die genau das tun. – Ale

1

Ja, es gibt einen detaillierten Beispielcode in PHP, der X-Sendfile in this page darstellt. Möglicherweise müssen Sie auch this parent site für den Download und die Installation beziehen. Ich folgte dem Tutorial und es funktionierte für mich wie Charme.