Heim > Backend-Entwicklung > PHP-Tutorial > Wie kann ich fortsetzbare Downloads in PHP implementieren und gleichzeitig Dateipfade schützen?

Wie kann ich fortsetzbare Downloads in PHP implementieren und gleichzeitig Dateipfade schützen?

Linda Hamilton
Freigeben: 2024-12-26 11:50:10
Original
854 Leute haben es durchsucht

How Can I Implement Resumable Downloads in PHP While Protecting File Paths?

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

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!

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