Ich muss eine CSV-Datei als HTTP-Antwort senden. Wie kann ich die Ausgabeantwort als CSV-Format festlegen?
Das funktioniert nicht:
Response.ContentType = "application/CSV";
Ich muss eine CSV-Datei als HTTP-Antwort senden. Wie kann ich die Ausgabeantwort als CSV-Format festlegen?
Das funktioniert nicht:
Response.ContentType = "application/CSV";
Ich habe festgestellt, dass das Problem mit dem IE darin besteht, dass er die zurückgesendeten Daten ausspäht und sich seine eigene Meinung über den Inhaltstyp bildet, von dem er glaubt, er sei gesendet worden. Dies führt zu einer Reihe von Nebeneffekten, wie z.B. dass bei Textdateien immer ein saveAs-Dialog geöffnet wird, weil die Daten komprimiert übertragen werden. Die Lösung lautet (im php-Code)......
header('X-Content-Type-Options: nosniff');
Die oben beschriebene Einstellung des Inhaltstyps und der Inhaltsdisposition führt bei verschiedenen Browsern zu sehr unterschiedlichen Ergebnissen:
IE8: Dialogfeld "Speichern unter" wie gewünscht und Excel als Standardanwendung. 100 % gut.
Firefox: Das Dialogfeld "Speichern unter" wird zwar angezeigt, aber Firefox hat keine Ahnung, dass es sich um ein Arbeitsblatt handelt. Schlägt vor, es mit Visual Studio zu öffnen! 50% gut
Chrome: Die Hinweise werden vollständig ignoriert. Die CSV-Daten werden im Browser angezeigt. 0% gut.
Natürlich beziehe ich mich in all diesen Fällen auf die Browser, so wie sie ausgeliefert werden, ohne Anpassung der Mime/Application Mappings.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.