Heim  >  Artikel  >  Backend-Entwicklung  >  Wie lade ich eine CSV-Datei von einem PHP-Skript herunter?

Wie lade ich eine CSV-Datei von einem PHP-Skript herunter?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-09 12:42:02850Durchsuche

How to Download a CSV File from a PHP Script?

So generieren und laden Sie CSV-Dateien aus PHP-Skripten herunter: Eine umfassende Anleitung

Einführung

Für den Datenaustausch und die Datenanalyse ist häufig das Erstellen und Herunterladen von CSV-Dateien (Comma-Separated Values) erforderlich. In PHP kann diese Aufgabe durch verschiedene Methoden erledigt werden. Dieser Leitfaden bietet eine ausführliche Anleitung, wie dies auch für unerfahrene Programmierer zu erreichen ist.

Erstellen des CSV-Strings

So erstellen Sie jeweils einen CSV-String aus einem Array Das Element muss in einen durch Kommas getrennten Wert umgewandelt werden. Dies kann mit der Funktion fputcsv() erreicht werden:

$output = fopen("php://temp", "w");
foreach ($array as $line) {
    fputcsv($output, $line);
}
fseek($output, 0);

Senden von HTTP-Headern

Um den Browser aufzufordern, die CSV-Datei zu speichern, anstatt sie anzuzeigen, haben wir Sie müssen bestimmte HTTP-Header senden:

header('Content-Disposition: attachment; filename="filename.csv"');
header('Content-Type: text/csv');

Generieren und Herunterladen der CSV-Datei

Durch die Kombination der oben genannten Schritte können wir eine Funktion zum Generieren und Herunterladen von CSV-Dateien erstellen :

function downloadCsv(array $array, string $filename): void
{
    // Create the CSV string
    $output = fopen("php://temp", "w");
    foreach ($array as $line) {
        fputcsv($output, $line);
    }
    fseek($output, 0);
    
    // Send HTTP headers
    header('Content-Disposition: attachment; filename="' . $filename . '"');
    header('Content-Type: text/csv');
    
    // Send the CSV file
    fpassthru($output);
}

Sie können diese Funktion verwenden, um CSV-Dateien mit dem folgenden Code herunterzuladen:

$array = [
    ['id', 'name', 'email'],
    ['1', 'John', 'john@example.com'],
    ['2', 'Jane', 'jane@example.com']
];
downloadCsv($array, 'contacts.csv');

Alternative Methode

Anstelle von php://temp, Sie können direkt in den Ausgabepuffer schreiben:

function downloadCsv2(array $array, string $filename): void
{
    header('Content-Disposition: attachment; filename="' . $filename . '"');
    header('Content-Type: text/csv');
    
    $f = fopen('php://output', 'w');
    foreach ($array as $line) {
        fputcsv($f, $line);
    }
}

Das obige ist der detaillierte Inhalt vonWie lade ich eine CSV-Datei von einem PHP-Skript herunter?. 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