Dans le développement Web, nous voulons parfois que les utilisateurs puissent télécharger des fichiers au lieu de les visualiser dans un navigateur. Pour le moment, nous pouvons utiliser la fonction d'en-tête () de PHP pour réaliser cette exigence. La fonction d'en-tête () vous permet d'envoyer des informations d'en-tête HTTP brutes et peut contrôler le comportement du navigateur.
Cet article vous montrera comment forcer le navigateur à télécharger un fichier via la fonction d'en-tête () au lieu de l'ouvrir directement.
Tout d'abord, vous devez vous assurer que le fichier est prêt et que vous connaissez son chemin. Par exemple, supposons que vous ayez un fichier situé dans un répertoire sur le serveur avec le chemin /path/to/your/file.txt . Vous souhaitez que l'utilisateur télécharge le fichier au lieu de le visualiser directement dans le navigateur.
Afin de forcer le navigateur à télécharger le fichier, l'en-tête HTTP correct doit être défini. La fonction d'en-tête () de PHP vous permet d'envoyer diverses informations d'en-tête HTTP, les étapes spécifiques sont les suivantes:
<?php
// Définir le chemin du fichier
$file = '/path/to/your/file.txt';
// Vérifiez si le fichier existe
if (file_exists($file)) {
// Réglez le bon MIME taper
header('Content-Type: application/octet-stream');
// Spécifiez le nom du fichier téléchargé
header('Content-Disposition: attachment; filename="' . basename($file) . '"');
// Définir la taille du fichier
header('Content-Length: ' . filesize($file));
// Effacer le tampon de sortie
ob_clean();
flush();
// Contenu du fichier de sortie au navigateur
readfile($file);
exit;
} else {
// Si le fichier n'existe pas,Erreur rapide
echo 'fichier introuvable!';
}
?>
En-tête («Content-Type: Application / Octet-Stream»)
Cette ligne de code indique au navigateur que le fichier est un flux binaire et que le navigateur doit le traiter comme un fichier au lieu d'essayer de l'afficher directement.
en-tête ('contenu-disposition: pièce jointe; filename = "file.txt"')
Ici, la méthode de téléchargement de fichiers est définie comme pièce jointe ( pièce jointe ), et le nom de fichier en téléchargement est spécifié comme file.txt . Vous pouvez modifier le nom du fichier au besoin.
en-tête ('Content-Length:'. Filesize ($ file))
Cette ligne de codes définit la taille du fichier pour aider le navigateur à comprendre la taille du fichier et facilite l'affichage des progrès de téléchargement.
ob_clean () et flush ()
Ces fonctions sont utilisées pour effacer le tampon de sortie de PHP pour s'assurer que le contenu du fichier est correctement transféré au navigateur.
ReadFile (fichier $)
Cette fonction présente le contenu du fichier au navigateur, déclenchant le téléchargement du fichier.
sortie
Appeler Exit () pour mettre fin à l'exécution du script PHP pour s'assurer qu'il n'y a pas d'autres sorties inutiles pendant le processus de téléchargement de fichiers.
Vous pouvez maintenant accéder aux scripts PHP dans votre navigateur. En supposant que le nom du fichier de script est téléchargé.php , il vous suffit de visiter http://m66.net/download.php (notez que vous remplacez l'URL par votre chemin de fichier réel). Si tout est configuré correctement, le navigateur vous invitera à télécharger le fichier au lieu de l'ouvrir directement dans le navigateur.
Le fichier ne peut pas être téléchargé <br> Si le fichier n'est pas téléchargé, assurez-vous que le chemin du fichier est correct et que le script PHP a des autorisations suffisantes pour accéder au fichier.
Le fichier est vide après le téléchargement <br> Assurez-vous que le contenu du fichier n'est pas corrompu et que le tampon de sortie n'est pas mal nettoyé. Vous pouvez essayer de commenter ob_clean () et flush () pour voir si cela fonctionne.
Problème de type mime pour télécharger des fichiers <br> Si le type de fichier est spécial (tel que PDF, ZIP, etc.), vous pouvez définir différents types de mime en fonction du type de fichier. Par exemple:
header('Content-Type: application/pdf'); // pour PDF document
header('Content-Type: application/zip'); // pour ZIP document
De cette façon, la fonction en tête () de PHP vous aide à contrôler le comportement de téléchargement des fichiers, permettant aux utilisateurs de télécharger des fichiers comme prévu, plutôt que de les afficher directement dans le navigateur.