Comment télécharger un fichier via AJAX en PHP
Le téléchargement de fichiers via un appel AJAX en PHP nécessite des approches créatives au-delà des méthodes AJAX conventionnelles. Voici comment relever ce défi :
Au lieu d'utiliser AJAX pour les téléchargements de fichiers, pensez à ouvrir une nouvelle fenêtre et à définir son adresse sur le lien de téléchargement. Il s'agit d'une technique simple et efficace.
Vous pouvez également utiliser la propriété document.location de JavaScript pour rediriger le navigateur de l'utilisateur directement vers le lien de téléchargement. Voici un exemple :
function csv() { ajaxRequest = ajax(); postdata = "data=" + document.getElementById("id").value; ajaxRequest.onreadystatechange = function () { var ajaxDisplay = document.getElementById('ajaxDiv'); if (ajaxRequest.readyState == 4 && ajaxRequest.status == 200) { document.location = 'download.php?filename=' + ajaxRequest.responseText; } }; ajaxRequest.open("POST", "csv.php", false); ajaxRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); ajaxRequest.send(postdata); }
Ce code crée un script PHP distinct appelé download.php, responsable du téléchargement du fichier spécifié dans le paramètre filename.
Dans download.php, utilisez ce qui suit extrait de code pour forcer le téléchargement du fichier :
$fileName = 'file.csv'; $downloadFileName = 'newfile.csv'; if (file_exists($fileName)) { header('Content-Description: File Transfer'); header('Content-Type: text/csv'); header('Content-Disposition: attachment; filename='.$downloadFileName); ob_clean(); flush(); readfile($fileName); exit; }
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!