Muat Turun Boleh Dibuat Semula dengan Terowong Fail Berasaskan PHP
Dalam senario ini, apabila PHP digunakan sebagai proksi untuk muat turun fail, pengguna menghadapi cabaran dalam menyambung semula muat turun yang terganggu. Artikel ini bertujuan untuk menangani isu ini dan meneroka penyelesaian yang mungkin.
Melaksanakan Muat Turun Boleh Semula dalam PHP
Untuk mendayakan muat turun boleh disambung semula, anda mesti menyampaikan sokongan pelayan untuk kandungan separa pada mulanya melalui pengepala "Accept-Ranges: bytes". Selepas itu, apabila permintaan termasuk pengepala "Julat: bait=x-y" (di mana x dan y mewakili nilai berangka), anda harus mengekstrak julat yang diminta dan memanipulasi pemindahan fail dengan sewajarnya.
Kod PHP berikut menyelesaikannya :
$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);
Tambahan Nota
Atas ialah kandungan terperinci Bagaimanakah PHP Boleh Melaksanakan Muat Turun Fail Boleh Semula?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!