Paksa Muat Turun Fail Menggunakan Fungsi pengepala() PHP
Apabila cuba menawarkan muat turun fail kepada pengguna dari pelayan anda, anda mungkin menghadapi cabaran yang tidak dijangka . Dalam PHP, fungsi header() biasanya digunakan untuk tujuan ini, tetapi pelbagai contoh kod selalunya memberikan hasil yang mengecewakan.
Sebagai contoh, pertimbangkan kod berikut:
$size = filesize("Image.png"); header('Content-Description: File Transfer'); header('Content-Type: image/png'); header('Content-Disposition: attachment; filename="Image.png"'); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); header('Content-Length: ' . $size); readfile("Image.png");
Walaupun menetapkan pengepala yang diperlukan, termasuk Pelupusan Kandungan yang betul untuk mencetuskan dialog muat turun fail, tingkah laku yang diingini gagal berlaku.
Penyelesaian:
Untuk membetulkan isu ini, pastikan pengepala Jenis Kandungan ditetapkan kepada "aplikasi/oktet-strim" dan bukannya "imej/png " atau mana-mana jenis mime lain. Sebagai contoh, pengepala berikut harus memaksa muat turun fail secara konsisten:
$quoted = sprintf('"%s"', addcslashes(basename($file), '"\')); $size = filesize($file); header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename=' . $quoted); header('Content-Transfer-Encoding: binary'); header('Connection: Keep-Alive'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); header('Content-Length: ' . $size);
Dengan menggunakan pengepala ini, anda seharusnya boleh memaksa muat turun fail daripada aplikasi web PHP anda dengan pasti.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memaksa Muat Turun Fail dengan Amanah Menggunakan Fungsi `header()` PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!