web-dev-qa-db-fra.com

Comment utiliser le type CSIME MIME?

Dans une application Web sur laquelle je travaille, l'utilisateur peut cliquer sur un lien vers un fichier CSV. Il n'y a pas d'en-tête défini pour le type mime, donc le navigateur le rend simplement sous forme de texte. Je souhaite que ce fichier soit envoyé au format .csv afin que l'utilisateur puisse l'ouvrir directement avec calc, Excel, gnumeric, etc.

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

Ce code fonctionne comme prévu sur mon ordinateur (n'est-ce pas toujours comme ça?) Mais ne fonctionne pas sur un autre ordinateur.

Mon navigateur est une version nocturne de FF 3.0.1 (sur linux). Les navigateurs avec lesquels il ne fonctionnait pas étaient IE 7 et FF 3.0 (sous Windows)

Y a-t-il des bizarreries que je ne connais pas?

123
theman_on_vista

Vous pouvez essayer de forcer le navigateur à ouvrir une boîte de dialogue "Enregistrer sous ..." en procédant comme suit:

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

Ce qui devrait fonctionner sur la plupart des principaux navigateurs.

216
Sean Bright

Vous ne spécifiez pas de langage ou de structure, mais l'en-tête suivant est utilisé pour les téléchargements de fichiers:

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

Avec Internet Explorer, vous devez souvent spécifier l'en-tête Pragma: public pour que le téléchargement fonctionne correctement.

header('Pragma: public');

Juste mes 2 cents ..

5
4levels

Ce code peut être utilisé pour exporter n’importe quel fichier, y compris csv

// 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