Який тип MIME слід використовувати для CSV?


454

Я бачив application/csvвикористаний і також text/csv.

Яка різниця? Чи є різниця? Чи має значення, доки запит відповідає чомусь доступному? Вони взаємозамінні?

Відповіді:


623

RFC 7111

Є RFC, який охоплює його і каже використовувати text/csv.

Цей RFC оновлює RFC 4180.


Excel

Нещодавно я виявив явний миметик для програми Excel / vnd.ms-excel. Він був зареєстрований у IANA у 96 році. Зауважте, що виникає занепокоєння з приводу того, щоб бути на милість відправника та порушити вашу машину .

Тип носія: application / vnd.ms-excel

Ім'я Microsoft Excel (тм)

Необхідні параметри: Ні

Необов’язкові параметри: ім'я

Міркування щодо кодування: кращий base64

Міркування щодо безпеки: Як і у більшості типів програм, ці дані призначені для інтерпретації програмою, яка розуміє дані в системі одержувача. Одержувачі повинні розуміти, що вони перебувають у "милості" відправника при отриманні такого типу даних, оскільки дані будуть виконані у їхній системі, а безпека їх машин може бути порушена.

OID {org-id ms-файли (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
pjd

20
Блокнот ++ не "присвоює" жоден тип mime, послуга, яку ви використовуєте, призначає його.
Пабло Пацос

14
Нічого собі, багато людей стикаються через згадки про vnd.ms-excel. +1, я на один погляд подумав, що це цікава сторона;)
Веслі Сміт

95

Ви повинні використовувати "text / csv" відповідно до RFC 4180 .


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

1
Браузери здогадуються, що надіслати як MIME-тип файлу під час завантаження. Ви можете відхилити ті, з ким не хочете нічого спільного, але уважно перевірити фактичний вміст файлу - це єдиний спосіб переконатися, що завантажено.
Tetsujin no Oni

Текстові / вкладки-розділені значення технічно не є файлом CSV; або ти маєш на увазі, що ти можеш отримати його навіть для даних, розділених комами?
Артур

@Arthur Не соромтеся використовувати додаткову категорію файлів TSV. Я ігнорую інші терміни, оскільки багато програм створюють файл із розширенням .csv незалежно від того, який роздільник використовується, і PHP - як мова, що використовується найчастіше на сервері - також використовує термін CSV лише для своїх функцій. Назвіть це "файли, розділені символами", і ви все добре;)
mgutt

0

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

<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 таблиця під заголовком: "Формати Doc Google і підтримувані експортування типів 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, оскільки SO зараз не підтримує таблиці.
Luckylooke

1
@paul_h Я знайшов спосіб, сподіваюся, що тобі сподобається;)
Luckylooke

Плюс один через досить відформатовані таблиці :)
Stijn de Witt
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.