Quel type MIME dois-je utiliser pour CSV?

454

J'ai vu application/csvutilisé et aussi text/csv.

Quelle est la différence? Y a-t-il une différence? Est-ce important tant que la demande correspond à quelque chose qui est disponible? Sont-ils interchangeables?

Steve Dunn
la source

Réponses:

623

RFC 7111

Il y a un RFC qui le couvre et dit d'utiliser text/csv.

Cette RFC met à jour la RFC 4180.


Exceller

Récemment, j'ai découvert un mimetype explicite pour l'application Excel / vnd.ms-excel. Il a été enregistré auprès de l' IANA en 1996. Notez les inquiétudes soulevées par le fait d'être à la merci de l'expéditeur et de violer votre machine .

Type de support: application / vnd.ms-excel

Nom Microsoft Excel (tm)

Paramètres requis: Aucun

Paramètres facultatifs: nom

Considérations d'encodage: base64 préféré

Considérations de sécurité: comme pour la plupart des types d'applications, ces données sont destinées à être interprétées par un programme qui comprend les données du système du destinataire. Les destinataires doivent comprendre qu'ils sont à la «merci» de l'expéditeur lorsqu'ils reçoivent ce type de données, car les données seront exécutées sur leur système et la sécurité de leurs machines peut être violée.

OID {org-id ms-files (4) ms-excel (3)}

Feuille de calcul de type d'objet

Commentaires Ce type de média / OID est utilisé pour identifier Microsoft Excel de manière générique (c'est-à-dire, indépendamment de la version, du sous-type ou du format de plate-forme).

Je ne savais pas que les extensions de fournisseur étaient autorisées. Consultez cette réponse pour en savoir plus - merci starbeamrainbowlabs pour la référence.

Chris McCauley
la source
39
CSV est un format de fichier texte, pourquoi Excel aurait-il quelque chose à voir avec cela, ou ai-je raté quelque chose?
JimmyPena
25
Le fait qu'un programme ouvre un type de fichier n'a rien à voir avec le type MIME associé de ce type de fichier.
Pablo Pazos
7
@Pablo J'ai installé Excel sur une machine Windows, et la création d'un CSV dans Notepad ++ attribuera un type d'application MIME / vnd.ms-excel. Essayez-le par vous-même et vérifiez votre type MIME sur mime.ritey.com
pjd
20
Notepad ++ n'assigne aucun type MIME, le service que vous utilisez l'affecte.
Pablo Pazos
14
Wow, beaucoup de gens se font mal à cause de la mention de vnd.ms-excel. +1, pour ma part, je pensais que c'était une note intéressante;)
Wesley Smith
95

Vous devez utiliser "text / csv" selon la RFC 4180 .

Smokefoot
la source
1
Est-ce que "text / csv" accepte également les fichiers ".txt"? Je travaille sur l'application de la validation côté serveur pour accepter uniquement les types de fichiers ".csv". Mais les fichiers ".txt" sont également acceptés. Veuillez confirmer.
SukanyaPai
1
désolé mais je n'ai pas encore vu votre question. RFC 4180 s'assure que l'extension doit être .csv. Néanmoins, vous le savez peut-être, ce n'est pas une exigence stricte. Vous pouvez interrompre la mise en œuvre du RFC 4180, mais personnellement, je ne le ferais pas, car cela perturbe la lisibilité de l'application.
Smokefoot
48

Comportement étrange avec MS Excel: Si j'exporte au "format texte, séparé par des virgules ( csv)", voici le type MIME que j'obtiens après le téléchargement sur mon serveur Web:

[name] => data.csv
[type] => application/vnd.ms-excel

Microsoft semble donc faire à nouveau ses propres affaires, indépendamment des normes existantes: https://en.wikipedia.org/wiki/Comma-separated_values

Robert
la source
4
Vous ne pouvez pas vraiment faire confiance au type MIME envoyé par les clients Web, c'est juste un guide en général.
Chris Seufert
5
Cela est dû à la configuration du serveur Web qui mappe l'extension de fichier au type MIME. Microsofts IIS doit utiliser le registre des serveurs pour cela, qui est rempli par l'installation d'Excel s'il est installé sur le serveur Web.
Andrew Russell
5
Eh bien ... Considérant que la "norme existante" a décidé d'ignorer ce qui était déjà utilisé quand ils ont décidé de définir CSV dans la RFC 4180 qui a été écrite en octobre 2005, il serait idiot de blâmer Microsoft de ne pas sauter dans le futur pour voir ce que l'organisme de normalisation décide, puis l'utiliser à nouveau lorsqu'il a écrit Excel en 1985. Quelle version d'Excel installez-vous?
Robert McKee
1
En plus de tout le reste, Excel va modifier les valeurs de champ dans un fichier CSV.
Ronnie Overby
35

Mes utilisateurs sont autorisés à télécharger des fichiers CSV et text/csvet application/csvn'apparaissent maintenant. Ce sont ceux identifiés par finfo () :

text/plain
text/x-csv

Et ce sont ceux transmis par le navigateur:

text/plain
application/vnd.ms-excel
text/x-csv

Les types suivants n'apparaissaient pas, mais pouvaient:

application/csv
application/x-csv
text/csv
text/comma-separated-values
text/x-comma-separated-values
text/tab-separated-values
mgutt
la source
1
Les navigateurs supposent ce qu'il faut envoyer comme type MIME d'un fichier pendant le téléchargement. Vous pouvez rejeter d'emblée celles avec lesquelles vous ne voulez rien avoir à faire, mais vérifier le contenu réel du fichier avec soin est le seul moyen d'être sûr de ce qui a été téléchargé.
Tetsujin no Oni, le
le texte / les valeurs séparées par des tabulations n'est techniquement pas un fichier CSV; ou voulez-vous dire que vous pouvez également l'obtenir même pour les données séparées par des virgules?
Arthur
@Arthur N'hésitez pas à utiliser une catégorie de fichier TSV supplémentaire. J'ignore les autres termes car de nombreux programmes créent un fichier avec l'extension .csv quel que soit le délimiteur utilisé et PHP - comme langage côté serveur le plus utilisé - utilise le terme CSV dans ses fonctions uniquement. Appelez-le "fichiers séparés par des caractères" et tout va bien;)
mgutt
0

Pour tous ceux qui ont du mal avec l'API Google mimeType pour les fichiers * .csv. J'ai trouvé la liste des types MIME pour les fichiers Google Api Docs (regardez le résultat coupé)

<table border="1"><thead><tr><th>Google Doc Format</th><th>Conversion Format</th><th>Corresponding MIME type</th></tr></thead><tbody><tr><td>Documents</td><td>HTML</td><td>text/html</td></tr><tr></tr><tr><td></td><td>HTML (zipped)</td><td>application/zip</td></tr><tr><td></td><td>Plain text</td><td>text/plain</td></tr><tr><td></td><td>Rich text</td><td>application/rtf</td></tr><tr><td></td><td>Open Office doc</td><td>application/vnd.oasis.opendocument.text</td></tr><tr><td></td><td>PDF</td><td>application/pdf</td></tr><tr><td></td><td>MS Word document</td><td>application/vnd.openxmlformats-officedocument.wordprocessingml.document</td></tr><tr><td></td><td>EPUB</td><td>application/epub+zip</td></tr><tr><td>Spreadsheets</td><td>MS Excel</td><td>application/vnd.openxmlformats-officedocument.spreadsheetml.sheet</td></tr><tr><td></td><td>Open Office sheet</td><td>application/x-vnd.oasis.opendocument.spreadsheet</td></tr><tr><td></td><td>PDF</td><td>application/pdf</td></tr><tr><td></td><td>CSV (first sheet only)</td><td>text/csv</td></tr><tr><td></td><td>TSV (first sheet only)</td><td>text/tab-separated-values</td></tr><tr><td></td><td>HTML (zipped)</td><td>application/zip</td></tr><tr></tr><tr><td>Drawings</td><td>JPEG</td><td>image/jpeg</td></tr><tr><td></td><td>PNG</td><td>image/png</td></tr><tr><td></td><td>SVG</td><td>image/svg+xml</td></tr><tr><td></td><td>PDF</td><td>application/pdf</td></tr><tr><td>Presentations</td><td>MS PowerPoint</td><td>application/vnd.openxmlformats-officedocument.presentationml.presentation</td></tr><tr><td></td><td>Open Office presentation</td><td>application/vnd.oasis.opendocument.presentation</td></tr><tr></tr><tr><td></td><td>PDF</td><td>application/pdf</td></tr><tr><td></td><td>Plain text</td><td>text/plain</td></tr><tr><td>Apps Scripts</td><td>JSON</td><td>application/vnd.google-apps.script+json</td></tr></tbody></table>

Source ici: https://developers.google.com/drive/v3/web/manage-downloads#downloading_google_documents le tableau sous: "Les formats Google Doc et les types MIME d'exportation pris en charge se mappent comme suit"

Il y a aussi une autre liste

<table border="1"><thead><tr><th>MIME Type</th><th>Description</th></tr></thead><tbody><tr><td><code><span>application/vnd.<wbr>google-apps.<wbr>audio</span></code></td><td></td></tr><tr><td><code><span>application/vnd.<wbr>google-apps.<wbr>document</span></code></td><td>Google Docs</td></tr><tr><td><code><span>application/vnd.<wbr>google-apps.<wbr>drawing</span></code></td><td>Google Drawing</td></tr><tr><td><code><span>application/vnd.<wbr>google-apps.<wbr>file</span></code></td><td>Google Drive file</td></tr><tr><td><code><span>application/vnd.<wbr>google-apps.<wbr>folder</span></code></td><td>Google Drive folder</td></tr><tr><td><code><span>application/vnd.<wbr>google-apps.<wbr>form</span></code></td><td>Google Forms</td></tr><tr><td><code><span>application/vnd.<wbr>google-apps.<wbr>fusiontable</span></code></td><td>Google Fusion Tables</td></tr><tr><td><code><span>application/vnd.<wbr>google-apps.<wbr>map</span></code></td><td>Google My Maps</td></tr><tr><td><code><span>application/vnd.<wbr>google-apps.<wbr>photo</span></code></td><td></td></tr><tr><td><code><span>application/vnd.<wbr>google-apps.<wbr>presentation</span></code></td><td>Google Slides</td></tr><tr><td><code><span>application/vnd.<wbr>google-apps.<wbr>script</span></code></td><td>Google Apps Scripts</td></tr><tr><td><code><span>application/vnd.<wbr>google-apps.<wbr>site</span></code></td><td>Google Sites</td></tr><tr><td><code><span>application/vnd.<wbr>google-apps.<wbr>spreadsheet</span></code></td><td>Google Sheets</td></tr><tr><td><code><span>application/vnd.<wbr>google-apps.<wbr>unknown</span></code></td><td></td></tr><tr><td><code><span>application/vnd.<wbr>google-apps.<wbr>video</span></code></td><td></td></tr><tr><td><code><span>application/vnd.<wbr>google-apps.<wbr>drive-sdk</span></code></td><td>3rd party shortcut</td></tr></tbody></table>

Source ici: https://developers.google.com/drive/v3/web/mime-types

Mais le premier était plus utile pour mon cas d'utilisation ..

Bon codage;)

Luckylooke
la source
Les règles de Stackoverflow doivent inclure des réponses en ligne sans lien avec d'autres plateformes.
paul_h
@paul_h J'aimerais, mais dites-moi comment formater ces tables sous une forme raisonnable pour SO, car SO ne prend pas en charge les tables pour le moment.
Luckylooke
1
@paul_h J'ai trouvé le chemin, j'espère que vous l'aimez;)
Luckylooke
Plus un à cause des jolis tableaux formatés :)
Stijn de Witt