CSV应该使用哪种MIME类型?


454

我见过application/csv二手车也text/csv

有什么不同?有区别吗?只要请求匹配可用的内容,这有关系吗?它们可以互换吗?

Answers:


623

RFC 7111

有一个RFC涵盖了它并说要使用text/csv

该RFC更新了RFC 4180。


电子表格

最近,我发现了Excel application / vnd.ms-excel的显式模仿类型。它于96年在IANA上注册。请注意,有关发件人摆布违反您的机器的担忧。

媒体类型:application / vnd.ms-excel

名称Microsoft Excel(tm)

必选参数:无

可选参数:名称

编码注意事项:首选base64

安全考虑:与大多数应用程序类型一样,此数据旨在由理解收件人系统上数据的程序进行解释。接收者在接收此类数据时需要了解,他们处于发送者的“仁慈”状态,因为数据将在其系统上执行,并且可能会破坏其计算机的安全性。

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

对象类型电子表格

注释此媒体类型/ OID通常用于标识Microsoft Excel(即独立于版本,子类型或平台格式)。

我不知道允许供应商扩展。查看此答案以了解更多信息-感谢starbeamrainbowlabs提供的参考。


39
CSV是一种文本文件格式,为什么Excel与它有任何关系,还是我丢失了某些内容?
JimmyPena 2012年

25
程序打开文件类型与该文件类型的关联MIME类型无关。
Pablo Pazos 2015年

7
@Pablo我已经在Windows计算机上安装了Excel,并且在Notepad ++中创建CSV将分配MIME类型的application / vnd.ms-excel。自己尝试一下,并在mime.ritey.com上
pjd 2015年

20
Notepad ++不会“分配”任何mime类型,您使用的服务是为其分配的。
Pablo Pazos 2015年

14
哇,很多人因提及而受伤vnd.ms-excel。+1,我曾经以为这是一个有趣的旁注;)
Wesley Smith

95

您应该根据RFC 4180使用“ text / csv” 。


1
“ text / csv”是否也接受“ .txt”文件?我正在服务器端应用验证以仅接受“ .csv”文件类型。但是“ .txt”文件也被接受。请确认。
SukanyaPai

1
抱歉,到目前为止还没有看到您的问题。RFC 4180确保扩展名应为.csv。不过,您可能会知道,这不是严格的要求。您可以破坏RFC 4180的实现,但是就我个人而言,我不会这样做,因为它干扰了应用程序的可读性。
Smokefoot

47

奇怪的行为MS Excel:如果我导出为“基于文本的逗号分隔格式(csv)”,则这是在网络服务器上载后得到的mime类型:

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

因此,无论现有的标准如何,微软似乎都在做自己的事情:https : //en.wikipedia.org/wiki/Comma-separated_values


4
您不能真正相信Web客户端发送的mime类型,它通常只是一个指南。
克里斯·塞弗特

5
这是由于Web服务器的配置所致,该服务器将文件扩展名映射到mime类型。Microsoft IIS应该为此使用服务器注册表,如果它安装在Web服务器上,则由Excel安装填充。
安德鲁·罗素

5
好吧...考虑到“现有标准”在他们决定在2005年10月编写的RFC 4180中定义CSV时决定忽略已经使用的内容,怪怪微软没有跳入未来,会很愚蠢。请参阅标准机构的决定,然后在1985年他们首次编写excel时再使用该标准。您要安装什么版本的excel?
罗伯特·麦基

1
最重要的是,Excel会处理CSV文件中的字段值。
罗尼·欧弗比

35

我的用户可以上传CSV文件,text/csv并且application/csv目前还没有出现。这些是通过finfo()标识的:

text/plain
text/x-csv

这些是通过浏览器传输的:

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

以下类型没有出现,但是可以:

application/csv
application/x-csv
text/csv
text/comma-separated-values
text/x-comma-separated-values
text/tab-separated-values

1
浏览器猜测在上传过程中将以文件的MIME类型发送什么。您可以拒绝那些不需要的内容,但是请务必仔细检查文件的实际内容,这是确保已上传内容的唯一方法。
Tetsujin no Oni

文本/制表符分隔值在技术上不是CSV文件;还是说即使是逗号分隔的数据也可以得到它?
亚瑟

@Arthur随时使用其他TSV文件类别。我忽略了其他术语,因为无论使用哪种定界符,许多程序都会创建带有.csv扩展名的文件,而PHP(作为最常用的服务器端语言)在其功能中也仅使用CSV术语。称其为“字符分隔的文件”,就可以了;)
mgutt

0

适用于* .csv文件的使用Google API mimeType的用户。我已经找到了google api docs文件的MIME类型的列表(查看剪切的结果)

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

来源在这里:https : //developers.google.com/drive/v3/web/manage-downloads#downloading_google_documents 的表格:“ Google Doc格式和支持的导出MIME类型相互映射,如下所示”

还有另一个清单

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

来源在这里:https : //developers.google.com/drive/v3/web/mime-types

但是第一个对我的用例更有用。

快乐的编码;)


Stackoverflow规则应包括内联答案,而不链接到其他平台。
paul_h

@paul_h我想,但是请告诉我如何将这些表格式化为合理的格式,因为SO目前不支持表。
Luckylooke

1
@paul_h我找到了方法,希望您喜欢它;)
Luckylooke

再加上一张,因为表格的格式很漂亮:)
Stijn de Witt
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.