Heim > Backend-Entwicklung > PHP-Tutorial > Wie kann PHP fortsetzbare Dateidownloads implementieren?

Wie kann PHP fortsetzbare Dateidownloads implementieren?

Linda Hamilton
Freigeben: 2024-12-07 11:10:17
Original
930 Leute haben es durchsucht

How Can PHP Implement Resumable File Downloads?

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);
Nach dem Login kopieren

Zusätzliche Hinweise

  • Der Code geht davon aus, dass es sich nur um einen einzigen Bereich handelt wird angefordert.
  • Fehlerbehandlung wurde der Kürze halber weggelassen.
  • Weitere Details zu Teilinhalten und der Fread-Funktion finden Sie in der bereitgestellten Dokumentation.

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage