Heim  >  Artikel  >  Web-Frontend  >  Wie erzwinge ich das Herunterladen einer CSV-Datei nach der Erstellung mit PHP und AJAX?

Wie erzwinge ich das Herunterladen einer CSV-Datei nach der Erstellung mit PHP und AJAX?

Susan Sarandon
Susan SarandonOriginal
2024-10-24 08:35:02757Durchsuche

How to Force Download a CSV File After Creation with PHP and AJAX?

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 umleiten

Das 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn