Heim > Backend-Entwicklung > PHP-Tutorial > Wie kann ich fortsetzbare Downloads in PHP File Tunneling implementieren?

Wie kann ich fortsetzbare Downloads in PHP File Tunneling implementieren?

Susan Sarandon
Freigeben: 2024-12-08 19:52:11
Original
806 Leute haben es durchsucht

How Can I Implement Resumable Downloads in PHP File Tunneling?

Fortsetzbare Downloads mit PHP File Tunneling

Bei der Verwendung von PHP zum Streamen von Dateidownloads kann es wünschenswert sein, wiederaufnehmbare Downloads für Benutzer zu ermöglichen. Allerdings verhindert das Standard-PHP-Skript-Setup oft, dass Downloads fortgesetzt werden.

Um fortsetzbare Downloads mit PHP zu unterstützen, befolgen Sie diese Schritte:

  1. Accept-Ranges-Header senden:
    Senden Sie den Header „Accept-Ranges: Bytes“ in allen Antworten, um anzuzeigen, dass der Server die Wiederaufnahme unterstützt Downloads.
  2. Bereichsanfragen verarbeiten:
    Eingehende Anfragen auf einen Range: bytes=x-y-Header prüfen, wobei x der Offset und y das Endbyte des angeforderten Bereichs ist.
  3. Datei suchen und Bereich senden:
    Öffnen Sie die Datei und suchen Sie bis zum angegebenen Offset. Senden Sie dann den angeforderten Bytebereich mit fread().
  4. Teilinhaltsheader festlegen:
    Für Bereichsanfragen legen Sie den HTTP/1.0 206 Teilinhaltsheader fest und geben den Inhaltsbereich an Verwenden von Content-Range: Bytes x-y/Dateigröße.

Die Implementierung dieser Schritte sollte fortsetzbare Downloads ermöglichen Ihr PHP-Datei-Tunneling-Setup. Hier ist ein Beispiel-PHP-Code, der den Prozess demonstriert:

$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

Das obige ist der detaillierte Inhalt vonWie kann ich fortsetzbare Downloads in PHP File Tunneling 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