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");
É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');
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: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