Maison > développement back-end > tutoriel php > Comment puis-je forcer le téléchargement de fichiers en PHP à l'aide de la fonction « header() » ?

Comment puis-je forcer le téléchargement de fichiers en PHP à l'aide de la fonction « header() » ?

Susan Sarandon
Libérer: 2024-12-05 21:10:12
original
1042 Les gens l'ont consulté

How Can I Force File Downloads in PHP Using the `header()` Function?

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

Pour permettre aux utilisateurs de télécharger des fichiers depuis votre serveur, vous pouvez utiliser l'en-tête() fonction. Toutefois, si vous rencontrez des problèmes avec des exemples existants, cet article vous fournira une solution.

Le code que vous avez essayé n'incluait pas les en-têtes cruciaux suivants :

  • Content-Type spécifiant le type de fichier (par exemple, image/png)
  • Content-Disposition indiquant que le fichier doit être téléchargé plutôt que affiché dans le navigateur
  • Content-Length indiquant la taille du fichier

Voici un extrait de code corrigé qui devrait fonctionner :

$size = filesize("Image.png");

header('Content-Type: image/png');
header('Content-Disposition: attachment; filename="Image.png"');
header('Content-Length: ' . $size);
readfile("Image.png");
Copier après la connexion

Étapes de dépannage :

  • Assurez-vous que le chemin du fichier est correct et que le fichier existe.
  • Vérifiez que le serveur Web est autorisé à accéder au fichier.
  • Vérifiez que tous les en-têtes nécessaires sont présents et corrects.
  • Essayez de désactiver les extensions de navigateur ou les plugins qui peut interférer avec les téléchargements.
  • Videz le cache du navigateur et les cookies.
  • Testez le code dans plusieurs navigateurs pour exclure problèmes spécifiques au navigateur.

Considérations supplémentaires :

  • Pour les fichiers non-image, le type de contenu doit être défini en conséquence (par exemple, application /octet-stream pour les fichiers binaires génériques).
  • Si vous souhaitez que le fichier soit affiché en ligne dans le navigateur au lieu d'être téléchargé, remplacez la pièce jointe par en ligne dans l'en-tête Content-Disposition.
  • Vous pouvez empêcher la mise en cache du fichier en ajoutant les en-têtes suivants :
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
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!

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