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

Bagaimanakah Saya Boleh Melaksanakan Muat Turun Boleh Semula dalam Terowong Fail PHP?

Susan Sarandon
Lepaskan: 2024-12-08 19:52:11
asal
806 orang telah melayarinya

How Can I Implement Resumable Downloads in PHP File Tunneling?

Muat Turun Boleh Dibuat Semula dengan Terowong Fail PHP

Apabila menggunakan PHP untuk menstrim muat turun fail, adalah wajar untuk mendayakan muat turun semula untuk pengguna. Walau bagaimanapun, persediaan skrip PHP lalai selalunya menghalang muat turun daripada disambung semula.

Untuk menyokong muat turun boleh disambung semula dengan PHP, ikut langkah berikut:

  1. Hantar Pengepala Julat Terima:
    Hantar Accept-Ranges: pengepala bait dalam semua respons untuk menunjukkan bahawa pelayan menyokong penyambungan semula muat turun.
  2. Kendalikan Permintaan Julat:
    Periksa permintaan masuk untuk Julat: bytes=x-y pengepala, dengan x ialah offset dan y ialah bait akhir julat yang diminta.
  3. Cari Fail dan Hantar Julat:
    Buka fail dan cari kepada offset yang ditentukan. Kemudian, hantar julat bait yang diminta menggunakan fread().
  4. Tetapkan Pengepala Kandungan Separa:
    Untuk permintaan julat, tetapkan pengepala Kandungan Separa HTTP/1.0 206 dan nyatakan julat kandungan menggunakan Julat Kandungan: bait x-y/saiz fail.

Melaksanakan langkah-langkah ini harus membolehkan muat turun boleh disambung semula dalam persediaan terowong fail PHP anda. Berikut ialah contoh kod PHP yang menunjukkan proses:

$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

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Muat Turun Boleh Semula dalam Terowong Fail PHP?. 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