Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Saya Boleh Melaksanakan Muat Turun Boleh Semula dalam PHP Semasa Melindungi Laluan Fail?

Bagaimanakah Saya Boleh Melaksanakan Muat Turun Boleh Semula dalam PHP Semasa Melindungi Laluan Fail?

Linda Hamilton
Linda Hamiltonasal
2024-12-26 11:50:10864semak imbas

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

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn