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.
Um fortsetzbare Downloads zu ermöglichen, können die folgenden Schritte ausgeführt werden genommen:
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.
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