Какой тип MIME я должен использовать для CSV?

454

Я видел application/csvподержанные и тоже text/csv.

Какая разница? Есть ли разница? Имеет ли значение, что, если запрос соответствует тому, что доступно? Они взаимозаменяемы?

Стив Данн
источник

Ответы:

623

RFC 7111

Есть RFC, который покрывает это и говорит использовать text/csv.

Этот RFC обновляет RFC 4180.


превосходить

Недавно я обнаружил явный mimetype для приложения Excel / vnd.ms-excel. Он был зарегистрирован в IANA в 96 году. Обратите внимание на опасения, связанные с тем, чтобы быть в зависимости от отправителя и нарушения вашей машины .

Тип носителя: application / vnd.ms-excel

Имя Microsoft Excel (тм)

Обязательные параметры: нет

Необязательные параметры: имя

Вопросы кодирования: предпочтительно base64

Соображения безопасности: Как и в большинстве типов приложений, эти данные предназначены для интерпретации программой, которая понимает данные в системе получателя. Получатели должны понимать, что они находятся в «милости» отправителя при получении данных этого типа, поскольку данные будут выполняться в их системе, и безопасность их компьютеров может быть нарушена.

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

Таблица типов объектов

Комментарии Этот тип носителя / OID используется для общей идентификации Microsoft Excel (т. Е. Независимо от версии, подтипа или формата платформы).

Я не знал, что расширения поставщика были разрешены. Проверьте этот ответ, чтобы узнать больше - спасибо starbeamrainbowlabs за ссылку.

Крис МакКоли
источник
39
CSV - это формат текстового файла. Почему Excel имеет к нему какое-то отношение, или я что-то упустил?
JimmyPena
25
То, что программа открывает тип файла, не имеет ничего общего со связанным MIME-типом этого типа файла.
Пабло Пасос
7
@Pablo У меня установлен Excel на компьютере с Windows, и создание CSV в Notepad ++ назначит MIME-тип приложения / vnd.ms-excel. Попробуйте сами и проверить тип MIME в mime.ritey.com
ПСР
20
Notepad ++ не «назначает» какой-либо тип MIME, служба, которую вы используете, назначает его.
Пабло Пасос,
14
Вау, многие люди задеваются от упоминания vnd.ms-excel. +1, я, например, подумал, что это была интересная заметка;)
Уэсли Смит
95

Вы должны использовать «text / csv» в соответствии с RFC 4180 .

Smokefoot
источник
1
«Text / csv» также принимает файлы «.txt»? Я работаю над применением проверки на стороне сервера, чтобы просто принять ".csv" типы файлов. Но файлы ".txt" также принимаются. Пожалуйста, подтвердите.
SukanyaPai
1
извините, но до сих пор не видел ваш вопрос. RFC 4180 гарантирует, что расширение должно быть .csv. Тем не менее, вы, наверное, знаете, это не строгое требование. Вы можете нарушить реализацию RFC 4180, но лично я бы не стал этого делать, потому что это нарушает читабельность приложения.
Smokefoot
48

Странное поведение с MS Excel: Если я экспортирую в «текстовый формат, разделенный запятыми ( csv)», это mime-тип, который я получаю после загрузки на мой веб-сервер:

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

Таким образом, Microsoft, похоже, снова занимается своими делами, независимо от существующих стандартов: https://en.wikipedia.org/wiki/Comma-separated_values

Роберт
источник
4
Вы не можете доверять MIME-типу, отправляемому веб-клиентами, это всего лишь руководство.
Крис Сойферт
5
Это связано с настройкой веб-сервера, который отображает расширение файла на тип mime. Microsoft IIS должен использовать реестр серверов для этого, который заполняется установкой Excel, если он установлен на веб-сервере.
Эндрю Рассел
5
Ну ... Учитывая, что «существующий стандарт» решил игнорировать то, что уже использовалось, когда они решили определить CSV в RFC 4180, который был написан в октябре 2005 года, было бы глупо обвинять Microsoft в том, что она не прыгнула в будущее, чтобы посмотрите, что решит орган по стандартизации, и затем используйте это, когда они впервые написали Excel в 1985 году. Какую версию 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
mgutt
источник
1
Браузеры предполагают, что отправлять в качестве файла MIME во время загрузки. Вы можете отклонить из-под контроля те, с которыми не хотите иметь ничего общего, но тщательная проверка фактического содержимого файла - единственный способ убедиться в том, что было загружено.
Тетсуджин но Они
text / tab-separated-values ​​технически не является CSV-файлом; или вы имеете в виду, что вы можете получить его даже для данных, разделенных запятыми?
Артур
@Arthur Не стесняйтесь использовать дополнительную категорию файлов TSV. Я игнорирую другие термины, потому что многие программы создают файл с расширением .csv независимо от того, какой разделитель используется, а PHP - как наиболее используемый язык на стороне сервера - также использует термин CSV только в своих функциях. Назовите это «символьно-разделенными файлами», и вы в порядке;)
mgutt
0

Для тех, кто борется с Google API mimeType для * .csv файлов. Я нашел список типов MIME для файлов Google Api Docs (посмотрите на результат)

<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

Но первый был более полезным для моего варианта использования ..

Удачного кодирования;)

Luckylooke
источник
Правила Stackoverflow должны включать встроенные ответы без ссылок на другие платформы.
paul_h
@paul_h Я хотел бы, но, пожалуйста, скажите мне, как отформатировать эти таблицы в разумной форме для SO, потому что SO не поддерживает таблицы прямо сейчас.
Luckylooke
1
@paul_h Я нашел способ, надеюсь, вам понравится;)
Luckylooke
Плюс один из-за довольно отформатированных таблиц :)
Stijn de Witt