„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie kann ich fortsetzbare Downloads in meinem PHP-Dateiübertragungsskript aktivieren?

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

Veröffentlicht am 19.01.2025
Durchsuche:920

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 mithilfe von 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 den Accept-Ranges: Bytes-Header: Dies Der 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“ empfangen, analysieren Sie den Bereich und suchen Sie nach dem gewünschten Offset in die Datei und senden Sie den angeforderten Bytebereich.
  3. Legen Sie den HTTP-Statuscode für den Teilinhalt fest: Antworten Sie mit HTTP/1.0 206 Teilinhalt, 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);

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.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3