Es ist schon spät und ich bin noch wach, weil ich an einem Problem nage.
Ich programmiere ein PHP Script, welches später einmal Downloads ausliefern soll. Ich möchte auch den Range-Header unterstützen, da die Dateien mitunter recht groß sein können und ich so ein pausieren/wiederaufnehmen von Downloads erlauben möchte.
Jetzt stehe ich allerdings vor einem Problem, auf welches ich garnicht mal so einfach gekommen bin:
Es scheint mir, dass der Apache (xampp) den Range-HTTP-Header nicht wie von mir gewollt an mein PHP-Script durchreicht, sondern diesen Header auf die Ausgabe meines Scriptes anwendet. Das ist natürlich so nicht gewollt. Schließlich möchte ich diese Aufgabe ja in meinem Script übernehmen. Wie kann ich das also realisieren? Wo muss ich was rumdrehen damit das funktioniert?
Oder bin ich da auf einer ganz falschen Fährte und der Fehler liegt dort nicht?
Ich habe mit Putty lange rumgetestet. Folgende Eingabe
- Code: Select all
GET /root/download.php?fid=839835 HTTP/1.1
Host: localhost
Range: bytes=3-4
Connection: Close
liefert mir folgende Antwort:
HTTP/1.1 206 Partial Content
Date: Tue, 10 Jul 2012 00:09:16 GMT
Server: Apache/2.2.21 (Win32) mod_ssl/2.2.21 OpenSSL/1.0.0e PHP/5.3.8 mod_perl/2.0.4 Perl/v5.10.1
X-Powered-By: PHP/5.3.8
Set-Cookie: PHPSESSID=hksnoo23vcafpej6066st4sb97; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Disposition: attachment; filename="filedownload.dat"
Accept-Ranges: bytes
Content-Range: bytes 3-4/61
Content-Length: 2
Connection: close
Content-Type: application/octet-stream
Bin für Hilfe sehr dankbar.
Lieben Gruß