Rumah > pembangunan bahagian belakang > tutorial php > Bagaimanakah Saya Boleh Memaksa Muat Turun Fail dengan Amanah Menggunakan Fungsi `header()` PHP?

Bagaimanakah Saya Boleh Memaksa Muat Turun Fail dengan Amanah Menggunakan Fungsi `header()` PHP?

Mary-Kate Olsen
Lepaskan: 2024-12-29 02:08:11
asal
602 orang telah melayarinya

How Can I Reliably Force File Downloads Using PHP's `header()` Function?

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

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

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!

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