Maison > développement back-end > tutoriel php > Comment forcer le téléchargement de fichiers avec PHP en utilisant `header()` ?

Comment forcer le téléchargement de fichiers avec PHP en utilisant `header()` ?

DDD
Libérer: 2024-12-04 14:54:10
original
257 Les gens l'ont consulté

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

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

1. Le problème :

Vous essayez de permettre aux utilisateurs de télécharger des fichiers depuis votre serveur, mais le fichier n'affiche pas de boîte de dialogue « Enregistrer sous ».

2. La cause :

Déclaration de type de contenu incorrecte dans l'en-tête.

3. La solution :

Assurez-vous que l'en-tête du type de contenu est défini sur application/octet-stream pour les téléchargements de fichiers :

header('Content-Type: application/octet-stream');
Copier après la connexion

4. Conseils supplémentaires :

  • Utilisez la fonction addcslashes pour protéger le nom de fichier des caractères susceptibles de casser l'en-tête.
  • Définissez un nom de fichier spécifique pour le fichier téléchargé à l'aide de Content-Disposition : pièce jointe; nom de fichier= header.
  • Spécifiez la longueur du contenu à l'aide de l'en-tête Content-Length.
  • Ajoutez des en-têtes pour empêcher la mise en cache et assurez-vous que le fichier est enregistré plutôt que affiché dans le navigateur.

5. Exemple de code :

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

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal