Heim > Backend-Entwicklung > PHP-Tutorial > Wie kann ich fortsetzbare Downloads in meinem PHP-Dateiübertragungsskript aktivieren?

Wie kann ich fortsetzbare Downloads in meinem PHP-Dateiübertragungsskript aktivieren?

Linda Hamilton
Freigeben: 2024-12-07 15:45:18
Original
721 Leute haben es durchsucht

How Can I Enable Resumable Downloads in My PHP File Transfer Script?

Fortsetzbare Downloads mit einem PHP-Dateiübertragungsskript ermöglichen

Einführung

Beim Übertragen von Dateien mit PHP-Skripten aus Sicherheitsgründen der absolute Pfad der herunterladbaren Dateien muss oft verheimlicht werden. Herkömmliche PHP-Dateiübertragungsskripte unterstützen jedoch möglicherweise keine fortsetzbaren Downloads, was zu Unannehmlichkeiten für Endbenutzer führt, bei denen es zu Verbindungsunterbrechungen kommt.

Lösung: Unterstützung fortsetzbarer Downloads

Um fortsetzbare Downloads zu ermöglichen, können die folgenden Schritte ausgeführt werden genommen:

  1. Senden Sie die Accept-Ranges: Bytes Header: Dieser Header informiert den Client darüber, dass Teilinhalte unterstützt werden.
  2. Teilinhaltsanfragen verarbeiten: Wenn Sie eine Anfrage mit dem Header „Range: bytes=x-y“ erhalten, analysieren Sie den Bereich. Suchen Sie den gewünschten Offset in der Datei und senden Sie den angeforderten Bytebereich.
  3. Legen Sie den HTTP-Status für Teilinhalte fest Code:Reagieren Sie mit HTTP/1.0 206 Partial Content, um eine erfolgreiche Teilübertragung anzuzeigen.

PHP-Implementierung

Unten finden Sie eine Beispielimplementierung dieser Prinzipien in PHP:

$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 ($offset > 0) {
    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

Dieses Skript prüft zunächst, ob eine Teilinhaltsanforderung gestellt wurde. Wenn dies der Fall ist, analysiert es den Bereich aus dem Range-Header, sucht nach dem entsprechenden Offset in der Datei und sendet den angeforderten Bytebereich. Das Skript setzt außerdem den Accept-Ranges-Header auf Bytes und sendet bei Bedarf den entsprechenden HTTP-Statuscode für Teilinhalte.

Durch die Implementierung dieser Maßnahmen können fortsetzbare Downloads mithilfe von PHP-Dateiübertragungsskripten unterstützt werden, was eine robuste Lösung darstellt für Dateiübertragungen, die nach Unterbrechungen fortgesetzt werden können.

Das obige ist der detaillierte Inhalt vonWie kann ich fortsetzbare Downloads in meinem PHP-Dateiübertragungsskript aktivieren?. 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