Maison > développement back-end > tutoriel php > Comment puis-je forcer le téléchargement de fichiers en PHP à l'aide de « header() » et éviter les problèmes d'affichage du navigateur ?

Comment puis-je forcer le téléchargement de fichiers en PHP à l'aide de « header() » et éviter les problèmes d'affichage du navigateur ?

Linda Hamilton
Libérer: 2024-12-03 06:36:12
original
430 Les gens l'ont consulté

How Can I Force File Downloads in PHP Using `header()` and Avoid Browser Display Issues?

Forcer le téléchargement de fichiers avec PHP à l'aide de Header()

Problème :
Malgré diverses tentatives, les utilisateurs constatent difficultés à demander le téléchargement de fichiers à partir d'un serveur à l'aide de la fonction header() de PHP. Ils observent l'envoi des en-têtes nécessaires mais rencontrent des problèmes lors de l'affichage de la boîte de dialogue de sauvegarde.

Solution :
Pour réussir à forcer les téléchargements de fichiers, les en-têtes doivent être définis de manière appropriée. Le code suivant répond aux préoccupations soulevées :

$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);
Copier après la connexion

Différences clés par rapport aux tentatives précédentes :

  1. Content-Type : Le bon le type de contenu pour les téléchargements de fichiers est "application/octet-stream" au lieu de "image/png."
  2. Citation du nom de fichier : Le nom du fichier doit être correctement cité pour empêcher l'interprétation de caractères potentiellement malveillants.
  3. En-têtes supplémentaires : Le code comprend les en-têtes « Connexion : Keep-Alive » et « Expires : 0 », qui permettent de garantir des connexions fiables et d'éviter la mise en cache. problèmes.

Navigateurs vérifiés :
Il a été confirmé que cette solution fonctionne dans Firefox 8.0.1, Chrome 15.0.874.121 et Safari 5.1.1.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal