Fortsetzbare Downloads in PHP-Skripten
Beim Tunneln von Dateidownloads über PHP-Skripte zum Schutz von Dateipfaden wird deutlich, dass Standardmethoden nicht unterstützt werden fortsetzbare Downloads. Um dieses Problem zu beheben, ziehen Sie die folgende Lösung in Betracht:
Der Kern der Unterstützung fortsetzbarer Downloads besteht darin, die teilweise Inhaltsverarbeitung zu implementieren. Um dies einzuleiten, senden Sie den Header „Accept-Ranges: bytes“ in allen Antworten und geben Sie damit die Unterstützung für Teilinhalte an.
Parsen Sie beim Empfang einer Anfrage mit dem Header „Range: bytes=x-y“ den vom Client angegebenen Bereich. Öffnen Sie die Datei, suchen Sie nach Byte x und senden Sie die angeforderten y - x Bytes. Legen Sie außerdem den Antwortstatus auf „HTTP/1.0 206 Partial Content“ fest.
Hier ist ein einfaches PHP-Code-Snippet, das diesem Ansatz grob folgt:
$filesize = filesize($file); if (isset($_SERVER['HTTP_RANGE'])) { $partialContent = true; preg_match('/bytes=(\d+)-(\d+)?/', $_SERVER['HTTP_RANGE'], $matches); $offset = intval($matches[1]); $length = intval($matches[2]) - $offset; } else { $partialContent = false; } $file = fopen($file, 'r'); fseek($file, $offset); $data = fread($file, $length); fclose($file); if ($partialContent) { header('HTTP/1.1 206 Partial Content'); header('Content-Range: bytes ' . $offset . '-' . ($offset + $length) . '/' . $filesize); } header('Content-Type: ' . $ctype); header('Content-Length: ' . $filesize); header('Content-Disposition: attachment; filename="' . $fileName . '"'); header('Accept-Ranges: bytes'); print($data);
Durch die Einbindung dieses Mechanismus aktivieren Sie die Fortsetzung Downloads unter Wahrung der Privatsphäre der Dateispeicherorte durch Verwendung von PHP-Skripten zum Tunneln.
Das obige ist der detaillierte Inhalt vonWie kann ich fortsetzbare Downloads in PHP implementieren und gleichzeitig Dateipfade schützen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!