Génération de fichiers à télécharger et à rediriger en PHP
Dans les applications Web, il est souvent nécessaire de générer des fichiers sur le serveur et d'inviter les utilisateurs à télécharger eux. PHP fournit un moyen simple d'y parvenir en utilisant les en-têtes. Cependant, vous pouvez également rencontrer des scénarios dans lesquels vous devez rediriger les utilisateurs vers une nouvelle page une fois le fichier généré et l'invite de téléchargement affichée.
Le défi de la redirection après le téléchargement du fichier
L'extrait de code que vous avez fourni configure avec succès les en-têtes nécessaires pour forcer un téléchargement CSV. Cependant, l'ajout d'un en-tête de redirection à la fin ("header("Location: /newpage")") ne fonctionnera pas comme prévu. En effet, les en-têtes sont déjà envoyés lorsque le contenu est répercuté et les actions ultérieures (telles que les redirections) ne peuvent pas être effectuées avant que le contenu ne soit entièrement envoyé au navigateur.
Approche alternative
Au lieu de rediriger après l'invite de téléchargement, il est recommandé de rediriger les utilisateurs vers une page « finale » où ils peuvent être informés du lancement réussi du téléchargement. Cette dernière page peut fournir un message aux utilisateurs, tel que "Votre téléchargement devrait démarrer automatiquement. Sinon, cliquez ici pour télécharger."
Lancer le téléchargement automatiquement
Pour lancez automatiquement le téléchargement après avoir été redirigé vers la page finale, vous pouvez utiliser les techniques suivantes :
Exemple de mise en œuvre
Voici un exemple de la façon dont vous pouvez rediriger les utilisateurs et lancer automatiquement le téléchargement :
header('Content-Type: application/csv'); header("Content-length: " . filesize($NewFile)); header('Content-Disposition: attachment; filename="' . $FileName . '"'); echo $content; // Set a redirect header to the final page header("Location: /final-page.php"); exit();
<!-- final-page.php --> Your download should start automatically. If not, click <a href="create_csv.php">here</a> to download.
Cette approche vous permet de rediriger les utilisateurs vers une autre page et garantit que le téléchargement du fichier est lancé immédiatement sans nécessiter d'intervention manuelle.
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!