Fortsetzbare Downloads mit PHP-basiertem Dateitunneling
In diesem Szenario, in dem PHP als Proxy für Dateidownloads verwendet wird, stehen Benutzer vor Herausforderungen bei der Wiederaufnahme unterbrochener Downloads. Ziel dieses Artikels ist es, dieses Problem anzugehen und mögliche Lösungen zu untersuchen.
Wiederaufnahmebare Downloads in PHP implementieren
Um fortsetzbare Downloads zu ermöglichen, müssen Sie zunächst die Unterstützung des Servers für Teilinhalte mitteilen über den Header „Accept-Ranges: Bytes“. Wenn eine Anfrage anschließend den Header „Range: Bytes=x-y“ enthält (wobei x und y numerische Werte darstellen), sollten Sie den angeforderten Bereich extrahieren und die Dateiübertragung entsprechend manipulieren.
Der folgende PHP-Code erreicht dies :
$filesize = filesize($file); $offset = 0; $length = $filesize; if (isset($_SERVER['HTTP_RANGE'])) { preg_match('/bytes=(\d+)-(\d+)?/', $_SERVER['HTTP_RANGE'], $matches); $offset = intval($matches[1]); $length = intval($matches[2]) - $offset; } $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);
Zusätzliche Hinweise
Das obige ist der detaillierte Inhalt vonWie kann PHP fortsetzbare Dateidownloads implementieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!