it-swarm.com.de

Wie verwende ich den CSV MIME-Typ?

In einer Webanwendung, an der ich arbeite, kann der Benutzer auf einen Link zu einer CSV-Datei klicken. Für den MIME-Typ ist kein Header festgelegt, daher wird er vom Browser nur als Text gerendert. Ich möchte, dass diese Datei als CSV-Datei gesendet wird, damit der Benutzer sie direkt mit calc, Excel, gnumeric usw. öffnen kann.

header('Content-Type: text/csv');
echo "cell 1, cell 2";

Dieser Code funktioniert erwartungsgemäß auf meinem Computer (ist das nicht immer so?), Funktioniert jedoch nicht auf einem anderen Computer.

Mein Browser ist eine nächtliche Version von FF 3.0.1 (unter Linux). Die Browser, in denen es nicht funktioniert hat, waren IE 7 und FF 3.0 (unter Windows)

Gibt es irgendwelche Macken, die ich nicht kenne?

123
theman_on_vista

Sie können versuchen, den Browser zum Öffnen eines Dialogfelds "Speichern unter ..." zu zwingen, indem Sie folgende Aktionen ausführen:

header('Content-type: text/csv');
header('Content-disposition: attachment;filename=MyVerySpecial.csv');
echo "cell 1, cell 2";

Welches sollte für die meisten gängigen Browser funktionieren.

216
Sean Bright

Sie geben keine Sprache oder kein Framework an, aber der folgende Header wird für Dateidownloads verwendet:

"Content-Disposition: attachment; filename=abc.csv"
12
gimel

Mit dem Internet Explorer müssen Sie häufig auch den Pragma: public-Header angeben, damit der Download ordnungsgemäß funktioniert.

header('Pragma: public');

Nur meine 2 Cent ..

5
4levels

Dieser Code kann verwendet werden, um eine beliebige Datei, einschließlich csv, zu exportieren

// application/octet-stream tells the browser not to try to interpret the file
header('Content-type: application/octet-stream');
header('Content-Length: ' . filesize($data));
header('Content-Disposition: attachment; filename="export.csv"');
2
Yuri Korolov