Muat Turun Boleh Disambung semula dalam Skrip PHP
Apabila terowong muat turun fail melalui skrip PHP untuk melindungi laluan fail, ia menjadi jelas bahawa kaedah lalai tidak menyokong muat turun boleh disambung semula. Untuk menangani isu ini, pertimbangkan penyelesaian berikut:
Inti menyokong muat turun boleh disambung semula adalah untuk melaksanakan pengendalian kandungan separa. Untuk memulakan ini, hantarkan pengepala Accept-Ranges: bytes dalam semua respons, menunjukkan sokongan untuk kandungan separa.
Setelah menerima permintaan dengan pengepala Julat: bytes=x-y, huraikan julat yang ditentukan oleh klien. Buka fail, cari bait x, dan hantar bait y - x yang diminta. Selain itu, tetapkan status respons kepada HTTP/1.0 206 Kandungan Separa.
Berikut ialah coretan kod PHP asas yang mengikuti pendekatan ini secara longgar:
$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);
Dengan menggabungkan mekanisme ini, anda mendayakan boleh disambung semula muat turun sambil mengekalkan privasi lokasi fail dengan menggunakan skrip PHP untuk terowong.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Muat Turun Boleh Semula dalam PHP Semasa Melindungi Laluan Fail?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!