Le téléchargement de fichiers est l'une des exigences courantes dans les applications Web. Grâce à la fonction Header () de PHP, vous pouvez appuyer sur les fichiers vers le navigateur et déclencher l'opération de téléchargement de fichiers de l'utilisateur. Cet article introduira en détail comment implémenter la fonction de téléchargement de fichiers via la fonction d'en-tête () de Php et expliquera comment les requêtes frontales déclenchent les demandes et comment le back-end utilise la fonction en-tête () pour pousser les fichiers vers le navigateur.
Dans l'avant, nous pouvons utiliser HTML ou JavaScript pour déclencher des demandes de téléchargement de fichiers. Le moyen le plus simple est de déclencher le téléchargement en cliquant sur un lien. Habituellement, nous utilisons la balise A pour définir un lien et utilisons HREF pour spécifier l'URL du fichier.
<a href="http://m66.net/download.php?file=example.txt" download>Cliquez pour télécharger le fichier</a>
Dans cet exemple, après que l'utilisateur clique sur le lien, le navigateur demandera le fichier téléchargement.php et passera les paramètres de fichier (tels que file = example.txt ) au script php backend via la demande de GET.
De plus, vous pouvez également déclencher dynamiquement les téléchargements de fichiers via JavaScript, tels que:
function downloadFile() {
const xhr = new XMLHttpRequest();
xhr.open("GET", "http://m66.net/download.php?file=example.txt", true);
xhr.responseType = "blob"; // Indique que les données renvoyées sont un fichier binaire
xhr.onload = function() {
const blob = xhr.response;
const link = document.createElement('a');
link.href = URL.createObjectURL(blob);
link.download = 'example.txt'; // Définir le nom du fichier téléchargé
link.click(); // Click Trigger,Télécharger le fichier
};
xhr.send();
}
Ce JavaScript demande le fichier via AJAX et utilise l'objet BLOB pour créer un lien de téléchargement de fichiers, qui déclenchera ensuite automatiquement le téléchargement.
En PHP, la fonction d'en-tête () est utilisée pour envoyer des informations d'en-tête HTTP brutes. Grâce à la fonction en-tête () , nous pouvons dire au navigateur de télécharger un fichier. Les opérations spécifiques sont les suivantes:
Tout d'abord, assurez-vous d'avoir vérifié l'existence du fichier.
Définissez les en-têtes de type de contenu et de contenu appropriés pour dire au navigateur comment gérer le fichier.
Utilisez readFile () ou d'autres méthodes pour sortir le contenu du fichier au navigateur.
<?php
// download.php
// Obtenir les paramètres du nom de fichier
$file = isset($_GET['file']) ? $_GET['file'] : '';
$filePath = '/path/to/files/' . $file; // Définissez le chemin absolu vers le fichier
// Vérifiez si le fichier existe
if (file_exists($filePath)) {
// Définissez l'en-tête de réponse,告知浏览器Télécharger le fichier
header('Content-Type: application/octet-stream'); // Applicable à tous les types de fichiers
header('Content-Disposition: attachment; filename="' . basename($filePath) . '"'); // Forcer le téléchargement et spécifier le nom du fichier
header('Content-Length: ' . filesize($filePath)); // Taille de fichier
header('Cache-Control: no-cache, no-store, must-revalidate'); // Désactiver le cache
header('Pragma: no-cache');
header('Expires: 0');
// Contenu du fichier de sortie
readfile($filePath);
exit;
} else {
echo 'Le fichier n'existe pas ou le chemin est mauvais!';
}
?>
Dans cet exemple PHP, nous faisons d'abord passer les paramètres de fichier dans l'URL (par exemple.txt ), puis recherchons le fichier par le chemin du fichier. Si le fichier existe, nous définissons le type de téléchargement de fichiers et d'autres informations via en-tête () , puis utilisons readFile () pour sortir le contenu du fichier, et enfin réaliser le téléchargement du fichier.
En-tête ('Content-Type: Application / OCTET-Stream') : Définissez le type de fichier sur un flux binaire. Pour tous les types de fichiers, utilisez l'application / l'octet-stream comme type de mime général.
En-tête ('Content-Disposition: pièce jointe; filename = "FileName"') : Définissez le navigateur pour télécharger le fichier en tant que pièce jointe lors de la réception de la réponse et attribuez un nom de fichier au fichier. Le nom de fichier peut être obtenu via Basename () .
En-tête ('Content-Length:'. FileSize ($ filepath)) : définit la taille du fichier. Ceci est particulièrement important pour les fichiers volumineux, et les navigateurs peuvent estimer les progrès du téléchargement en fonction de ces informations.
ReadFile ($ filepath) : Cette fonction lira le fichier et le sortira directement au navigateur.
sortie; : Après avoir sorti le contenu du fichier, appelez la sortie; termine l'exécution du script pour éviter une sortie ou une réponse inutile.
En utilisant la fonction d'en-tête () de PHP et combinée avec des paramètres d'en-tête HTTP appropriés, la fonction de téléchargement de fichiers peut être implémentée. Dans l'avant, l'utilisateur demande le fichier en cliquant sur le lien ou en déclenchant une demande AJAX; Dans le dos, PHP définit l'en-tête de réponse correct via la fonction d'en-tête () , puis pousse le contenu de fichier au navigateur à télécharger. De cette façon, vous pouvez facilement ajouter des fonctionnalités de téléchargement de fichiers à votre application Web.