¿Qué tipo de MIME debo usar para CSV?

454

He visto application/csvusado y tambiéntext/csv .

¿Cual es la diferencia? ¿Hay una diferencia? ¿Importa cuál, siempre y cuando la solicitud coincida con algo que está disponible? ¿Son intercambiables?

Steve Dunn
fuente

Respuestas:

623

RFC 7111

Hay un RFC que lo cubre y dice que lo use text/csv.

Este RFC actualiza el RFC 4180.


Sobresalir

Recientemente descubrí un tipo MIME explícito para la aplicación Excel / vnd.ms-excel. Fue registrado con IANA en el '96. Tenga en cuenta las inquietudes planteadas sobre estar a merced del remitente y violar su máquina .

Tipo de medio: application / vnd.ms-excel

Nombre Microsoft Excel (tm)

Parámetros requeridos: ninguno

Parámetros opcionales: nombre

Consideraciones de codificación: base64 preferido

Consideraciones de seguridad: como con la mayoría de los tipos de aplicaciones, estos datos están destinados a la interpretación de un programa que comprende los datos del sistema del destinatario. Los destinatarios deben comprender que están a la "merced" del remitente cuando reciben este tipo de datos, ya que los datos se ejecutarán en su sistema y se puede violar la seguridad de sus máquinas.

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

Hoja de cálculo de tipo de objeto

Comentarios Este tipo de medio / OID se utiliza para identificar Microsoft Excel de forma genérica (es decir, independiente de la versión, subtipo o formato de plataforma).

No sabía que se permitieran extensiones de proveedor. Consulte esta respuesta para obtener más información: gracias starbeamrainbowlabs por la referencia.

Chris McCauley
fuente
39
CSV es un formato de archivo de texto, ¿por qué Excel tendría algo que ver con eso o me falta algo?
JimmyPena
25
Que un programa abra un tipo de archivo no tiene nada que ver con el tipo MIME asociado de ese tipo de archivo.
Pablo Pazos
77
@Pablo Tengo Excel instalado en una máquina con Windows, y crear un CSV en Notepad ++ asignará un tipo MIME de aplicación / vnd.ms-excel. Pruébelo usted mismo y compruebe su tipo MIME en mime.ritey.com
pjd
20
Notepad ++ no "asigna" ningún tipo de mime, el servicio que utiliza lo está asignando.
Pablo Pazos
14
Wow, mucha gente se lastima por la mención de vnd.ms-excel. +1, por mi parte, pensé que era una nota al margen interesante;)
Wesley Smith
95

Debe usar "text / csv" de acuerdo con RFC 4180 .

Smokefoot
fuente
1
¿"Text / csv" acepta archivos ".txt" también? Estoy trabajando en aplicar la validación en el lado del servidor para aceptar solo los tipos de archivo ".csv". Pero también se aceptan los archivos ".txt". Confirme.
SukanyaPai
1
lo siento pero no he visto tu pregunta hasta ahora. RFC 4180 se asegura de que la extensión sea .csv. Sin embargo, es posible que sepas que no es un requisito estricto. Puede interrumpir la implementación del RFC 4180, pero personalmente no lo haría, porque está perturbando la legibilidad de la aplicación.
Smokefoot
47

Comportamiento extraño con MS Excel: Si exporto a "formato basado en texto, separado por comas ( csv)", este es el tipo mime que obtengo después de cargarlo en mi servidor web:

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

Entonces, Microsoft parece estar haciendo sus propias cosas nuevamente, independientemente de los estándares existentes: https://en.wikipedia.org/wiki/Comma-separated_values

Robert
fuente
44
Realmente no puede confiar en el tipo mime enviado por los clientes web, es solo una guía en general.
Chris Seufert
55
Esto se debe a la configuración del servidor web que asigna la extensión de archivo al tipo mime. Microsofts IIS debe usar el registro de servidores para esto que se completa con la instalación de Excel si está instalado en el servidor web.
Andrew Russell
55
Bueno ... Teniendo en cuenta que el "estándar existente" decidió ignorar lo que ya estaba en uso cuando decidieron definir CSV en RFC 4180, que fue escrito en octubre de 2005, sería una tontería culpar a Microsoft por no saltar al futuro. vea lo que decide el organismo de estándares y luego use eso cuando escribieron Excel por primera vez en 1985. ¿Qué versión de Excel está instalando?
Robert McKee
1
Además de todo lo demás, Excel destrozará los valores de campo en un archivo CSV.
Ronnie Overby
35

A mis usuarios se les permite cargar archivos CSV y text/csvya application/csvno aparecían. Estos son los identificados a través de finfo () :

text/plain
text/x-csv

Y estos son los que se transmiten a través del navegador:

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

Los siguientes tipos no aparecieron, pero pudieron:

application/csv
application/x-csv
text/csv
text/comma-separated-values
text/x-comma-separated-values
text/tab-separated-values
mgutt
fuente
1
Los navegadores adivinan qué enviar como tipo MIME de un archivo durante la carga. Puede rechazar de antemano aquellos con los que no quiere tener nada que ver, pero verificar el contenido real del archivo con cuidado es la única forma de asegurarse de lo que se ha cargado.
Tetsujin no Oni
los valores de texto / tabulación separados técnicamente no son archivos CSV; ¿O quiere decir que también puede obtenerlo incluso para datos separados por comas?
Arthur
@ Arthur Siéntase libre de usar una categoría de archivo TSV adicional. Ignoro los otros términos porque muchos programas crean un archivo con la extensión .csv sin importar qué delimitador se use y PHP, como el lenguaje del lado del servidor más usado, también usa el término CSV en sus funciones. Llámalo "archivos separados por caracteres" y estás bien;)
mgutt
0

Para cualquiera que tenga problemas con la API de Google mimeType para archivos * .csv. He encontrado la lista de tipos MIME para archivos de Google api docs (mira el resultado recortado)

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

Fuente aquí: https://developers.google.com/drive/v3/web/manage-downloads#downloading_google_documents la tabla debajo: "Los formatos de Google Doc y los tipos de MIME de exportación compatibles se asignan entre sí de la siguiente manera"

También hay otra lista.

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

Fuente aquí: https://developers.google.com/drive/v3/web/mime-types

Pero el primero fue más útil para mi caso de uso ...

Codificación feliz;)

Luckylooke
fuente
Las reglas de Stackoverflow deben incluir respuestas en línea sin enlace a otras plataformas.
paul_h
@paul_h Me gustaría, pero por favor dígame cómo formatear esas tablas en forma razonable para SO, porque SO no admite tablas en este momento.
Luckylooke
1
@paul_h He encontrado el camino, espero que les guste;)
Luckylooke
Más uno debido a las bonitas tablas formateadas :)
Stijn de Witt