Rumah > pembangunan bahagian belakang > tutorial php > Bagaimanakah PHP Boleh Melaksanakan Muat Turun Fail Boleh Semula?

Bagaimanakah PHP Boleh Melaksanakan Muat Turun Fail Boleh Semula?

Linda Hamilton
Lepaskan: 2024-12-07 11:10:17
asal
930 orang telah melayarinya

How Can PHP Implement Resumable File Downloads?

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);
Salin selepas log masuk

Tambahan Nota

  • Kod mengandaikan bahawa hanya satu julat diminta.
  • Pengendalian ralat telah ditinggalkan untuk ringkasnya.
  • Rujuk kepada dokumentasi yang disediakan untuk butiran lanjut tentang kandungan separa dan fungsi fread.

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan