Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana Memaksa Muat Turun Fail dengan PHP Menggunakan `header()`?

Bagaimana Memaksa Muat Turun Fail dengan PHP Menggunakan `header()`?

DDD
Lepaskan: 2024-12-04 14:54:10
asal
328 orang telah melayarinya

How to Force File Downloads with PHP Using `header()`?

Paksa Muat Turun Fail dengan PHP Menggunakan header()

1. Masalahnya:

Anda cuba untuk membolehkan pengguna memuat turun fail daripada pelayan anda tetapi fail itu tidak menggesa dialog "Simpan Sebagai".

2. Punca:

Pengisytiharan jenis kandungan yang salah dalam pengepala.

3. Penyelesaian:

Pastikan bahawa pengepala jenis kandungan ditetapkan kepada strim aplikasi/oktet untuk muat turun fail:

header('Content-Type: application/octet-stream');
Salin selepas log masuk

4. Petua Tambahan:

  • Gunakan fungsi addcslashes untuk melindungi nama fail daripada aksara yang boleh memecahkan pengepala.
  • Tetapkan nama fail khusus untuk fail yang dimuat turun menggunakan Content-Disposition: lampiran; nama fail= pengepala.
  • Tentukan panjang kandungan menggunakan pengepala Panjang Kandungan.
  • Tambahkan pengepala untuk mengelakkan caching dan pastikan fail disimpan dan bukannya dipaparkan dalam penyemak imbas.

5. Kod Contoh:

$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);
readfile($file);
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana Memaksa Muat Turun Fail dengan PHP Menggunakan `header()`?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan