Que tipo MIME devo usar para CSV?

454

eu tenho visto application/csv usado e tambémtext/csv .

Qual é a diferença? Existe alguma diferença? Importa qual, desde que a solicitação corresponda a algo que está disponível? Eles são intercambiáveis?

Steve Dunn
fonte

Respostas:

623

RFC 7111

Existe uma RFC que a cobre e diz para usar text/csv.

Este RFC atualiza o RFC 4180.


Excel

Recentemente, descobri um tipo de mim explícito para o aplicativo Excel / vnd.ms-excel. Foi registrado na IANA em 96. Observe as preocupações levantadas sobre estar à mercê do remetente e violar sua máquina .

Tipo de Mídia: application / vnd.ms-excel

Nome do Microsoft Excel (tm)

Parâmetros necessários: Nenhum

Parâmetros opcionais: nome

Considerações sobre codificação: preferida base64

Considerações de segurança: Como na maioria dos tipos de aplicativos, esses dados são destinados à interpretação de um programa que entende os dados no sistema do destinatário. Os destinatários precisam entender que estão à mercê do remetente ao receber esse tipo de dados, pois os dados serão executados em seu sistema e a segurança de suas máquinas poderá ser violada.

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

Planilha de tipo de objeto

Comentários Este tipo de mídia / OID é usado para identificar o Microsoft Excel genericamente (ou seja, independente da versão, subtipo ou formato da plataforma).

Eu não sabia que extensões de fornecedor eram permitidas. Confira esta resposta para saber mais - obrigado starbeamrainbowlabs pela referência.

Chris McCauley
fonte
39
CSV é um formato de arquivo de texto, por que o Excel tem alguma coisa a ver com isso ou estou faltando alguma coisa?
JimmyPena
25
O fato de um programa abrir um tipo de arquivo não tem nada a ver com o tipo MIME associado desse tipo de arquivo.
Pablo Pazos
7
@ Pablo Eu tenho o Excel instalado em uma máquina Windows e a criação de um CSV no Notepad ++ atribuirá um tipo MIME de application / vnd.ms-excel. Tente você mesmo e verificar o seu tipo MIME em mime.ritey.com
PJD
20
O Notepad ++ não "atribui" nenhum tipo de mímica, o serviço que você usa está atribuindo.
Pablo Pazos
14
Uau, muitas pessoas se machucam com a menção de vnd.ms-excel. +1, pensei que fosse uma observação interessante;) #
Wesley Smith
95

Você deve usar "text / csv" de acordo com a RFC 4180 .

Smokefoot
fonte
1
O "text / csv" também aceita os arquivos ".txt"? Estou trabalhando para aplicar a validação no servidor para aceitar apenas os tipos de arquivo ".csv". Mas os arquivos ".txt" também são aceitos. Confirme.
SukanyaPai 25/03/19
1
desculpe, mas não vi sua pergunta até agora. O RFC 4180 garante que a extensão seja .csv. No entanto, como você deve saber, não é um requisito estrito. Você pode interromper a implementação do RFC 4180, mas pessoalmente eu não faria isso, porque isso está atrapalhando a legibilidade do aplicativo.
Smokefoot 20/05/19
47

Comportamento estranho com MS Excel: Se eu exportar para "formato baseado em texto, separado por vírgula ( csv)", esse é o tipo mime que recebo após o upload no meu servidor da web:

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

Portanto, a Microsoft parece estar fazendo suas próprias coisas novamente, independentemente dos padrões existentes: https://en.wikipedia.org/wiki/Comma-separated_values

Robert
fonte
4
Você realmente não pode confiar no tipo MIME enviado pelos clientes da Web, geralmente é apenas um guia.
21815 Chris Seufert
5
Isso ocorre devido à configuração do servidor da web que mapeia a extensão do arquivo para o tipo mime. Microsofts O IIS deve usar o registro de servidores para isso, preenchido pela instalação do Excel, se estiver instalado no servidor web.
Andrew Russell
5
Bem ... Considerando que o "padrão existente" decidiu ignorar o que já estava em uso quando eles decidiram definir o CSV na RFC 4180, que foi escrita em outubro de 2005, seria tolice culpar a Microsoft por não pular no futuro. veja o que o órgão de padrões decide e, em seguida, use isso de volta quando eles escreveram o excel em 1985. Que versão do excel você está instalando?
Robert McKee
1
Acima de tudo, o Excel irá alterar os valores do campo em um arquivo CSV.
amigos estão
35

Meus usuários têm permissão para fazer upload de arquivos CSV text/csve application/csvainda não apareceram. Estes são os identificados através de finfo () :

text/plain
text/x-csv

E estes são os transmitidos pelo navegador:

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

Os seguintes tipos não apareceram, mas poderiam:

application/csv
application/x-csv
text/csv
text/comma-separated-values
text/x-comma-separated-values
text/tab-separated-values
mgutt
fonte
1
Os navegadores adivinham o que enviar como o tipo MIME de um arquivo durante o upload. Você pode rejeitar imediatamente os itens com os quais não quer nada, mas verificar o conteúdo real do arquivo com cuidado é a única maneira de garantir o upload do conteúdo.
Tetsujin no Oni
valores separados por texto / tabulação não são tecnicamente arquivos CSV; ou você também pode obtê-lo mesmo para dados separados por vírgula?
Arthur
@Arthur Sinta-se livre para usar uma categoria de arquivo TSV adicional. Eu ignoro os outros termos porque muitos programas criam um arquivo com a extensão .csv, independentemente do delimitador usado e o PHP - como a linguagem do lado do servidor mais usada - também usa o termo CSV em suas funções. Chame-o de "arquivos separados por caracteres" e você estará bem;)
mgutt 29/10
0

Para quem luta com a API do Google mimeType para arquivos * .csv. Eu encontrei a lista de tipos MIME para arquivos da API do Google Docs (veja o resultado cortado)

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

Fonte aqui: https://developers.google.com/drive/v3/web/manage-downloads#downloading_google_documents a tabela abaixo: "Os formatos do Google Doc e os tipos MIME de exportação suportados são mapeados entre si da seguinte maneira"

Há também outra 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>

Fonte aqui: https://developers.google.com/drive/v3/web/mime-types

Mas o primeiro foi mais útil para o meu caso de uso ..

Feliz codificação;)

Luckylooke
fonte
As regras do Stackoverflow incluem respostas inline sem link para outras plataformas.
paul_h
@paul_h Eu gostaria, mas por favor, diga-me como formatar essas tabelas em um formato razoável para o SO, porque o SO não suporta tabelas no momento.
Luckylooke
1
@paul_h eu encontrei o caminho, espero que você goste;)
Luckylooke
Mais um por causa das mesas bem formatados :)
Stijn de Witt