Dans de nombreux développements de sites Web, les utilisateurs peuvent avoir besoin de télécharger des fichiers. En utilisant la fonction d'en-tête fournie par PHP, vous pouvez facilement définir l'en-tête de réponse HTTP pour contrôler le comportement de téléchargement du fichier. Dans ce didacticiel, nous présenterons comment utiliser la fonction d'en-tête de PHP pour définir la disposition du contenu pour spécifier le nom de fichier du fichier téléchargé.
Le contenu est un en-tête HTTP qui indique au navigateur comment traiter les fichiers. L'utilisation la plus courante consiste à démarrer le téléchargement du fichier dans le navigateur et à spécifier un nom de fichier pour le fichier téléchargé. Il est généralement utilisé avec le type de contenu , qui indique au navigateur comment interpréter le type de contenu du fichier.
La fonction d'en-tête peut être utilisée pour envoyer des en-têtes HTTP bruts. Si nous souhaitons spécifier le nom du fichier lorsque le fichier est téléchargé, nous pouvons définir l'en-tête de contenu-Disposition . Voici un exemple simple:
<?php
// Définir le chemin du fichier
$file = 'path/to/your/file.txt';
// Assurez-vous que le fichier existe
if (file_exists($file)) {
// Définir le type de contenu correct,Dites au navigateur qu'il s'agit d'un fichier de téléchargement
header('Content-Type: application/octet-stream');
// installation Content-Disposition tête,Spécifiez le nom du fichier lorsque le fichier est téléchargé
header('Content-Disposition: attachment; filename="downloaded_file.txt"');
// installation文件大小
header('Content-Length: ' . filesize($file));
// Contenu de lecture et de sortie du fichier
readfile($file);
exit;
} else {
echo "Le fichier n'existe pas!";
}
?>
En-tête («Content-Type: Application / Octet-Stream»); : Cette ligne de code indique au navigateur de télécharger un fichier binaire et ne sera pas automatiquement ouvert.
En-tête ('Content-Disposition: pièce jointe; filename = "téléchargé_file.txt"'); : Cette ligne de code spécifie que le fichier est téléchargé en pièce jointe (c'est-à-dire le téléchargement), et le fichier se voit attribuer le nom téléchargé "téléchargé_file.txt" .
En-tête ('Content-Length:'. FileSize ($ file)); : Cette ligne de code spécifie la taille du fichier, ce qui aide le navigateur à gérer correctement le téléchargement du fichier.
readFile (fichier $); : Cette fonction lit le fichier et envoie le contenu au navigateur, commençant ainsi le téléchargement du fichier.
Parfois, nous pourrions vouloir que le nom de fichier soit généré dynamiquement, pas seulement une chaîne fixe. Dans ce cas, le nom de fichier peut être défini via des variables PHP. Par exemple:
<?php
// Définir le chemin du fichier
$file = 'path/to/your/file.txt';
// Générer dynamiquement les noms de fichiers
$fileName = 'downloaded_' . date('Y-m-d_H-i-s') . '.txt';
// Assurez-vous que le fichier existe
if (file_exists($file)) {
// Définir le type de contenu correct
header('Content-Type: application/octet-stream');
// 动态installation Content-Disposition tête
header('Content-Disposition: attachment; filename="' . $fileName . '"');
// installation文件大小
header('Content-Length: ' . filesize($file));
// Contenu de lecture et de sortie du fichier
readfile($file);
exit;
} else {
echo "Le fichier n'existe pas!";
}
?>
Dans cet exemple, le nom du fichier contiendra la date et l'heure actuelles (telles que: téléchargées_2025-05-04_12-30-45.txt ), et le nom de fichier sera différent à chaque fois que vous le téléchargez.
Parfois, nous devons fournir des téléchargements de fichiers via l'URL, pas seulement les fichiers locaux sur le serveur. À l'heure actuelle, nous pouvons également utiliser la fonction d'en-tête pour définir la disposition du contenu et télécharger le contenu du fichier à partir du serveur distant.
<?php
// installation远程文件 URL
$url = 'https://m66.net/files/sample.txt';
// Obtenez le contenu du fichier
$fileContent = file_get_contents($url);
// Si le contenu du fichier est obtenu avec succès
if ($fileContent !== false) {
// installation文件类型
header('Content-Type: application/octet-stream');
// installation文件下载名称
header('Content-Disposition: attachment; filename="sample_from_m66.txt"');
// installation文件大小
header('Content-Length: ' . strlen($fileContent));
// Contenu du fichier de sortie
echo $fileContent;
exit;
} else {
echo "Impossible de télécharger le fichier!";
}
?>
Dans cet exemple, nous téléchargeons le fichier à partir de https://m66.net/files/sample.txt et définissons le nom du fichier de téléchargement via l'en-tête de sample_from_m66.txt .
Assurez-vous qu'il n'y a pas de sortie HTML avant d'envoyer un en-tête . Parce que l'en-tête HTTP doit être envoyé avant tout contenu.
Si le fichier est grand, envisagez de diffuser le contenu du fichier au lieu de charger le fichier entier en mémoire.
Grâce à la fonction d'en-tête de PHP, nous pouvons facilement contrôler le comportement de téléchargement des fichiers, y compris la définition du nom du fichier lorsque le fichier est téléchargé. Dans le développement réel, cette fonction est très courante, en particulier dans les applications telles que les systèmes de gestion de fichiers et la génération de rapports.