Memaksa Muat Turun Fail dalam PHP
Membenarkan pengguna memuat turun imej atau fail lain daripada tapak web anda adalah keperluan biasa. Dalam PHP, tugas ini boleh dicapai dengan memanfaatkan pengepala yang sesuai dan teknik pengendalian fail.
Manipulasi Pengepala
Untuk memaksa muat turun fail, kita mesti menghantar pengepala yang sesuai ke pelayar. Pengepala ini mengawal tingkah laku penyemak imbas dan mengarahkannya untuk memuat turun fail dan bukannya memaparkannya dalam tetingkap penyemak imbas. Beberapa pengepala penting termasuk:
<code class="php">header("Cache-Control: private"); header("Content-Type: application/stream"); header("Content-Length: ".$fileSize); // File size in bytes header("Content-Disposition: attachment; filename=".$fileName); // File name to display</code>
Output Fail
Setelah pengepala ditetapkan dengan betul, kita perlu mengeluarkan fail itu sendiri. Ini dilakukan menggunakan fungsi PHP readfile(), yang membaca data fail dan menghantarnya ke penyemak imbas.
<code class="php">readfile ($filePath); exit();</code>
Contoh Kod
Menyatukan semuanya , berikut ialah skrip contoh yang memaksa muat turun imej dalam PHP:
<code class="php"><?php // Fetch the file info. $filePath = '/path/to/file/on/disk.jpg'; if(file_exists($filePath)) { $fileName = basename($filePath); $fileSize = filesize($filePath); // Output headers. header("Cache-Control: private"); header("Content-Type: application/stream"); header("Content-Length: ".$fileSize); header("Content-Disposition: attachment; filename=".$fileName); // Output file. readfile ($filePath); exit(); } else { die('The provided file path is not valid.'); } ?></code>
Mencipta Panel Muat Turun
Jika daripada memuat turun fail dengan segera, anda lebih suka panel untuk dipaparkan untuk pengesahan pengguna, anda boleh mengubah suai sedikit skrip. Berikut ialah contoh:
<code class="html"><a href="download.php?file=/path/to/file.jpg">Download</a></code>
Dalam download.php, anda boleh memaparkan panel pengesahan dengan butang yang mencetuskan muat turun fail sebenar:
<code class="php"><?php $file = $_GET['file']; if(file_exists($file)) { // Display confirmation panel... if(isset($_POST['confirm'])) { // Confirm button clicked header("Cache-Control: private"); header("Content-Type: application/stream"); header("Content-Length: ".filesize($file)); header("Content-Disposition: attachment; filename=".basename($file)); readfile ($file); exit(); } } else { die('Invalid file path.'); } ?></code>
Pendekatan ini membolehkan anda menyediakan pengguna dengan mekanisme muat turun yang lebih mesra pengguna.
Atas ialah kandungan terperinci Bagaimana Memaksa Muat Turun Fail Menggunakan Pengepala PHP dan Pengendalian Fail?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!