So laden Sie eine Datei über AJAX in PHP herunter
Bei der Arbeit mit Webanwendungen ist es oft notwendig, Dateien vom Server herunterzuladen. AJAX (Asynchronous JavaScript and XML) bietet eine Möglichkeit, solche Downloads zu initiieren, ohne die Seite neu laden zu müssen.
Eine Methode besteht darin, eine Schaltfläche zu erstellen, die eine AJAX-Funktion auslöst. Das folgende Code-Snippet demonstriert diesen Ansatz:
<code class="php">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){ ajaxDisplay.innerHTML = $ajaxRequest.responseText; } } $ajaxRequest.open("POST","csv.php",false); $ajaxRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); $ajaxRequest.send($postdata); }</code>
Hier stellt sich jedoch die Frage, wie man den Download einer erstellten CSV-Datei erzwingen kann, nachdem sie von PHP erstellt wurde. Das bereitgestellte Skript in der PHP-Datei lautet wie folgt:
<code class="php">$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; } echo "done";</code>
Das Problem besteht darin, dass die Ausführung dieses Skripts keinen Download initiiert, sondern stattdessen den Inhalt der CSV-Datei auf der Seite (im AjaxDiv) anzeigt. .
Die Antwort auf dieses Problem ist, dass AJAX nicht für das Herunterladen von Dateien gedacht ist. Stattdessen besteht die beste Vorgehensweise darin, ein neues Fenster zu öffnen und als Adresse den Download-Link festzulegen. Alternativ können Sie die Seite mit document.location = .....
direkt zum Download-Link umleitenDas obige ist der detaillierte Inhalt vonWie erzwinge ich das Herunterladen einer CSV-Datei nach der Erstellung mit PHP und AJAX?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!