Muat turun fail dalam PHP

May 24, 2023 am 09:11 AM
Muat turun fail php muat turun fail Pemindahan fail rangkaian

Apabila membangunkan tapak web atau aplikasi, kami selalunya perlu melaksanakan fungsi muat turun fail, yang boleh dicapai dengan mudah melalui PHP. Artikel ini akan memperkenalkan cara menggunakan PHP untuk melaksanakan fungsi muat turun fail.

1. Proses muat turun fail

Sebelum memuat turun fail, kita perlu memahami proses muat turun:

  1. Pengguna mengklik butang muat turun pada halaman web atau aplikasi;
  2. Pelayan menerima permintaan muat turun;
  3. Pelayan menyemak kebenaran pengguna dan kewujudan fail; >Pengguna menerima fail dan menyimpannya.
  4. 2. Bersedia untuk memuat turun fail
  5. Dalam PHP, kita boleh menggunakan fungsi readfile untuk membaca kandungan fail dan mengeluarkannya ke penyemak imbas. Walau bagaimanapun, kita perlu memastikan fail itu wujud, jika tidak pengecualian akan dibuang. Berikut ialah contoh kod ringkas:
$file_path = '/path/to/your/file/yourfile.extension';
if (file_exists($file_path))
{
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename=' . basename($file_path));
    header('Content-Transfer-Encoding: binary');
    header('Content-Length: ' . filesize($file_path));
    readfile($file_path);
    exit;
}
else
{
    die('File not found.');
}
Salin selepas log masuk

Dalam kod di atas, kami mula-mula menggunakan fungsi file_exists untuk menyemak sama ada fail itu wujud Jika fail itu wujud, tetapkan fail pengepala HTTP untuk memberitahu penyemak imbas bahawa fail akan dimuat turun, dan dalam Kandungan Tentukan nama fail dalam -Disposition, nyatakan jenis fail dalam Content-Type, dan gunakan fungsi readfile untuk mengeluarkan kandungan fail.

3. Halang muat turun fail daripada pautan kecurian

Disebabkan sifat penyemak imbas, sesetengah tapak yang tidak baik mungkin mencuri fail anda, jadi kami perlu menghalang muat turun fail daripada pautan kecurian.

Kami boleh menambah kod berikut untuk mengelakkan muat turun fail daripada dicuri:

$referer = $_SERVER['HTTP_REFERER'];
if ($referer && !preg_match('/^https?://' . $_SERVER['SERVER_NAME'] . '/', $referer))
{
    header("HTTP/1.1 403 Forbidden");
    die("Access denied.");
}
Salin selepas log masuk

Kod ini akan menyemak maklumat pengepala HTTP_REFERER dan memastikan ia sepadan dengan nama domain pelayan semasa, jika tidak , kembalikan kod status 403, akses dilarang.

4. Laksanakan muat turun bersegmen

Apabila memuat turun fail yang lebih besar, anda mungkin perlu melaksanakan fungsi muat turun bersegmen untuk mempercepatkan kelajuan muat turun dan mengurangkan penggunaan lebar jalur rangkaian. Dengan bantuan maklumat pengepala Julat HTTP 1.1, kami boleh melaksanakan muat turun bersegmen dengan mudah.

Berikut ialah contoh kod:

$file_path = '/path/to/your/file/yourfile.extension';
if (file_exists($file_path))
{
    $size = filesize($file_path);
    $start = 0;
    $end = $size - 1;
    
    if (isset($_SERVER['HTTP_RANGE']))
    {
        if (preg_match('/bytes=h*(d+)-(d*)[D.*]?/i', $_SERVER['HTTP_RANGE'], $matches))
        {
            $start = intval($matches[1]);
            if (!empty($matches[2]))
            {
                $end = intval($matches[2]);
            }
        }
    }
    if ($start > $end || $end > $size - 1 || $start < 0)
    {
        header('HTTP/1.1 416 Requested Range Not Satisfiable');
        header("Content-Range: bytes $start-$end/$size");
        exit;
    }
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename=' . basename($file_path));
    header('Content-Transfer-Encoding: binary');
    header("Content-Range: bytes $start-$end/$size");
    header('Accept-Ranges: bytes');
    header('Content-Length: ' . ($end - $start + 1));
    header("Cache-control: private");
    header('Pragma: private');
    header('Expires: ' . gmdate('D, d M Y H:i:s T', time() + 3600));
    
    $fp = fopen($file_path, 'rb');
    fseek($fp, $start);
    $buffer_size = 1024 * 8; //每次读取8 KB
    $bytes_send = 0;
    while (!feof($fp) && ($bytes_send < $end - $start + 1))
    {
        $buffer = fread($fp, $buffer_size);
        echo $buffer;
        flush();
        $bytes_send += strlen($buffer);
    }
    fclose($fp);
    exit;
}
else
{
    die('File not found.');
}
Salin selepas log masuk

Dalam kod di atas, kami mula-mula menyemak maklumat pengepala HTTP_RANGE dan jika maklumat pengepala tidak wujud, keluarkan keseluruhan fail. Jika maklumat pengepala wujud, offset mula dan offset tamat dihuraikan, kemudian fungsi fseek digunakan untuk mencari penuding fail, dan fungsi fread digunakan untuk membaca kandungan fail dan mengeluarkannya ke penyemak imbas.

5. Kesimpulan

Tidak sukar untuk melaksanakan fungsi muat turun fail dalam PHP Kami hanya perlu menyemak sama ada fail itu wujud dan menetapkan maklumat pengepala HTTP yang betul. Menggunakan maklumat pengepala Julat HTTP 1.1 boleh mencapai muat turun tersegmen dengan mudah dan menghalang muat turun fail daripada pautan yang dicuri boleh melindungi keselamatan fail. Oleh itu, kami boleh memilih untuk melaksanakan fungsi yang diperlukan mengikut keperluan kami untuk mencapai pengalaman pengguna yang lebih baik.

Atas ialah kandungan terperinci Muat turun fail dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Operasi pembukaan Python selepas memuat turun fail Operasi pembukaan Python selepas memuat turun fail Apr 03, 2024 pm 03:39 PM

Python menyediakan pilihan berikut untuk membuka fail yang dimuat turun: open() function: buka fail menggunakan laluan dan mod yang ditentukan (seperti 'r', 'w', 'a'). Pustaka permintaan: Gunakan kaedah muat turun() untuk memberikan nama secara automatik dan membuka fail secara terus. Pustaka Pathlib: Gunakan kaedah write_bytes() dan read_text() untuk menulis dan membaca kandungan fail.

Laksanakan muat naik dan muat turun fail dalam dokumen Workerman Laksanakan muat naik dan muat turun fail dalam dokumen Workerman Nov 08, 2023 pm 06:02 PM

Untuk melaksanakan muat naik dan muat turun fail dalam dokumen Workerman, contoh kod khusus diperlukan. Pengenalan: Workerman ialah rangka kerja komunikasi rangkaian tak segerak PHP berprestasi tinggi yang ringkas, cekap dan mudah digunakan. Dalam pembangunan sebenar, muat naik dan muat turun fail adalah keperluan fungsi biasa Artikel ini akan memperkenalkan cara menggunakan rangka kerja Workerman untuk melaksanakan muat naik dan muat turun fail, dan memberikan contoh kod khusus. 1. Muat naik fail: Muat naik fail merujuk kepada operasi memindahkan fail pada komputer tempatan ke pelayan. Yang berikut digunakan

Bagaimana untuk menggunakan fungsi PHP untuk memuat naik dan memuat turun lampiran untuk menghantar dan menerima e-mel? Bagaimana untuk menggunakan fungsi PHP untuk memuat naik dan memuat turun lampiran untuk menghantar dan menerima e-mel? Jul 25, 2023 pm 08:17 PM

Bagaimana untuk menggunakan fungsi PHP untuk memuat naik dan memuat turun lampiran untuk menghantar dan menerima e-mel? Dengan perkembangan pesat teknologi komunikasi moden, e-mel telah menjadi cara penting untuk orang ramai berkomunikasi dan menghantar maklumat dalam kehidupan seharian. Dalam pembangunan web, kami sering menghadapi keperluan untuk menghantar dan menerima e-mel dengan lampiran. Sebagai bahasa skrip sebelah pelayan yang berkuasa, PHP menyediakan pelbagai fungsi dan perpustakaan kelas yang boleh memudahkan proses pemprosesan e-mel. Artikel ini akan memperkenalkan cara menggunakan fungsi PHP untuk memuat naik dan memuat turun lampiran untuk menghantar dan menerima e-mel. Emel dihantar dahulu, kami

Cara menggunakan Laravel untuk melaksanakan fungsi muat naik dan muat turun fail Cara menggunakan Laravel untuk melaksanakan fungsi muat naik dan muat turun fail Nov 02, 2023 pm 04:36 PM

Cara menggunakan Laravel untuk melaksanakan fungsi muat naik dan muat turun fail Laravel ialah rangka kerja Web PHP popular yang menyediakan pelbagai fungsi dan alatan untuk menjadikan pembangunan aplikasi Web lebih mudah dan cekap. Salah satu fungsi yang biasa digunakan ialah muat naik dan muat turun fail. Artikel ini akan memperkenalkan cara menggunakan Laravel untuk melaksanakan fungsi muat naik dan muat turun fail, serta menyediakan contoh kod khusus. Muat naik fail Muat naik fail merujuk kepada memuat naik fail tempatan ke pelayan untuk penyimpanan. Dalam Laravel kita boleh menggunakan muat naik fail

Cara menggunakan rangka kerja Hyperf untuk memuat turun fail Cara menggunakan rangka kerja Hyperf untuk memuat turun fail Oct 21, 2023 am 08:23 AM

Cara menggunakan rangka kerja Hyperf untuk memuat turun fail Pengenalan: Muat turun fail adalah keperluan biasa apabila membangunkan aplikasi web menggunakan rangka kerja Hyperf. Artikel ini akan memperkenalkan cara menggunakan rangka kerja Hyperf untuk memuat turun fail, termasuk contoh kod khusus. 1. Persediaan Sebelum memulakan, pastikan anda telah memasang rangka kerja Hyperf dan berjaya mencipta aplikasi Hyperf. 2. Buat pengawal muat turun fail Mula-mula, kita perlu mencipta pengawal untuk mengendalikan permintaan muat turun fail. Buka terminal dan masuk

Bagaimana untuk mencetuskan muat turun fail apabila mengklik butang HTML atau JavaScript? Bagaimana untuk mencetuskan muat turun fail apabila mengklik butang HTML atau JavaScript? Sep 12, 2023 pm 12:49 PM

Pada masa kini, banyak aplikasi membolehkan pengguna memuat naik dan memuat turun fail. Contohnya, alat pengesanan plagiarisme membenarkan pengguna memuat naik fail dokumen yang mengandungi beberapa teks. Ia kemudian menyemak plagiarisme dan menghasilkan laporan yang boleh dimuat turun oleh pengguna. Semua orang tahu cara menggunakan inputtypefile untuk mencipta butang muat naik fail, tetapi beberapa pembangun tahu cara menggunakan JavaScript/JQuery untuk mencipta butang muat turun fail. Tutorial ini akan mengajar anda pelbagai cara untuk mencetuskan muat turun fail apabila butang HTML atau JavaScript diklik. Gunakan tag <a> HTML dan atribut muat turun untuk mencetuskan muat turun fail apabila butang diklik Setiap kali kami memberikan teg <a>

Bagaimana untuk melaksanakan muat naik dan muat turun fail dalam pembangunan fungsi back-end PHP? Bagaimana untuk melaksanakan muat naik dan muat turun fail dalam pembangunan fungsi back-end PHP? Aug 05, 2023 pm 07:25 PM

Bagaimana untuk melaksanakan muat naik dan muat turun fail dalam pembangunan fungsi back-end PHP? Dalam pembangunan web, muat naik dan muat turun fail adalah fungsi yang sangat biasa. Sama ada pengguna memuat naik imej, dokumen atau memuat turun fail, kod bahagian belakang diperlukan untuk memprosesnya. Artikel ini akan memperkenalkan cara melaksanakan fungsi muat naik dan muat turun fail pada bahagian belakang PHP dan melampirkan contoh kod tertentu. 1. Muat naik fail Muat naik fail merujuk kepada pemindahan fail dari komputer tempatan ke pelayan. PHP menyediakan pelbagai fungsi dan kelas untuk melaksanakan fungsi muat naik fail. Buat borang HTML dahulu, dalam HTM

Perisian tengah CakePHP: melaksanakan fungsi muat naik dan muat turun fail Perisian tengah CakePHP: melaksanakan fungsi muat naik dan muat turun fail Jul 30, 2023 pm 03:09 PM

Perisian tengah CakePHP: merealisasikan fungsi muat naik dan muat turun fail Dengan perkembangan Internet, fungsi muat naik dan muat turun fail menjadi semakin biasa. Apabila membangunkan aplikasi web, kami selalunya perlu melaksanakan muat naik dan muat turun fail. Apabila membangunkan aplikasi menggunakan rangka kerja CakePHP, middleware ialah alat yang sangat berguna yang boleh membantu kami memudahkan kod dan melaksanakan fungsi muat naik dan muat turun fail. Seterusnya, saya akan memperkenalkan cara menggunakan middleware CakePHP untuk melaksanakan fungsi muat naik dan muat turun fail. Pertama, kita perlu mencipta yang baru

See all articles