PHP CSV erstellen und als Download Link zur Verfügung stellen

DerZock

Lieutenant
Registriert
Mai 2009
Beiträge
908
Vorweg: Ich habe relativ wenig Ahnung von PHP, bitte entschuldigt meine Fragen :D

Ich möchte mit PHP eine CSV Datei erzeugen und diese dem Nutzer als Downloadlink zur Verfügung stellen. Dabei soll allerdings keine Datei auf dem Server angelegt werden.
Wie mache ich das?

Google Suche hat mich bis jetzt leider nicht viel weitergebracht, außer das man irgendwelche header sendet.
Wer kann helfen?
 
Ohne Gewähr:

PHP:
header("Content-Type: text/csv");

müßte schon reichen. Danach gibst du einfach ganz normal das aus, was in dem CSV-Dokument drinstehen soll.
 
und wie realisiere ich das als Downloadlink?
Jetzt wird sofort beim Laden der Seite der download gestartet. Ich würde aber gerne einen Link haben auf den der Benutzer klickt, sodass er nur bei Bedarf den Download starten kann.
 
Äh wo steckt das Problem?
Du verlinkst zu dem jeweiligen Skript der die CSV wiedergibt. Innerhalb des Linkes MUSS dann aber irgendwas stehen, anhand das Skript erkennt welche CSV es erstellen soll (falls es unterschiedliche gibt).

Dann als Header zum 'Downloaden' folgendes Senden:
PHP:
                        header("Expires: Mon, 26 Jul 1997 05:00:00 GMT\n");
                        header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
                        
                        header('Content-Description: File Transfer');
                        header("Content-Transfer-Encoding: binary");
                        header('Content-Type: application/octet-stream');

                        header('Content-Disposition: attachment; filename="'.$filename.'"');
Davor $filename defineiren und einach dein CSV-Inhalt z.B. per "echo" ausgeben.
Sinnvoll wäre auch noch header("Content-Length: ".$size.";\n"); aber da ich annehmen, dass jede CSV-Datei andere Größen haben wird das wohl nicht gehen.
 
Zurück
Oben