I’ve seen application/csv
used and also text/csv
.
Is there a difference? Does it matter which as long as the request matches something that’s available? Are they interchangeable?
ivanleoncz
8,6426 gold badges58 silver badges48 bronze badges
asked Aug 16, 2011 at 9:21
1
RFC 7111
There is an RFC which covers it and says to use text/csv
.
This RFC updates RFC 4180.
Excel
Recently I discovered an explicit mimetype for Excel application/vnd.ms-excel. It was registered with IANA in ’96. Note the concerns raised about being at the mercy of the sender and having your machine violated.
Media Type: application/vnd.ms-excel
Name Microsoft Excel ™
Required parameters: None
Optional parameters: name
Encoding considerations: base64 preferred
Security considerations: As with most application types this data is
intended for interpretation by a program that understands the data on
the recipient’s system. Recipients need to understand that they are at
the «mercy» of the sender, when receiving this type of data, since
data will be executed on their system, and the security of their
machines can be violated.OID { org-id ms-files(4) ms-excel (3) }
Object type spreadsheet
Comments This Media Type/OID is used to identify Microsoft
Excel generically (i.e., independent of version, subtype, or platform format).
I wasn’t aware that vendor extensions were allowed. Check out this answer to find out more — thanks starbeamrainbowlabs for the reference.
answered Aug 16, 2011 at 9:24
Chris McCauleyChris McCauley
25.6k8 gold badges47 silver badges65 bronze badges
21
You should use «text/csv» according to RFC 4180.
answered Aug 16, 2011 at 9:24
SmokefootSmokefoot
1,6952 gold badges10 silver badges13 bronze badges
3
Strange behavior with MS Excel
:
If i export to «text based, comma-separated format (csv
)» this is the mime-type I get after uploading on my webserver:
[name] => data.csv
[type] => application/vnd.ms-excel
So Microsoft seems to be doing own things again, regardless of existing standards: https://en.wikipedia.org/wiki/Comma-separated_values
aefxx
24.7k6 gold badges45 silver badges55 bronze badges
answered Jan 30, 2015 at 10:16
RobertRobert
7495 silver badges7 bronze badges
5
My users are allowed to upload CSV files and text/csv
and application/csv
did not appear by now. These are the ones identified through finfo():
text/plain
text/x-csv
And these are the ones transmitted through the browser:
text/plain
application/vnd.ms-excel
text/x-csv
The following types did not appear, but could:
application/csv
application/x-csv
text/csv
text/comma-separated-values
text/x-comma-separated-values
text/tab-separated-values
answered Feb 9, 2017 at 15:07
mguttmgutt
5,7892 gold badges49 silver badges76 bronze badges
3
For anyone struggling with Google API mimeType for *.csv
files, I have found the list of MIME types for google api docs files
Google Doc Format | Conversion Format | Corresponding MIME type |
---|---|---|
Documents | HTML | text/html |
HTML (zipped) | application/zip |
|
Plain text | text/plain |
|
Rich text | application/rtf |
|
Open Office doc | application/vnd.oasis.opendocument.text |
|
application/pdf |
||
MS Word document | application/vnd.openxmlformats-officedocument.wordprocessingml.document |
|
EPUB | application/epub+zip |
|
Spreadsheets | MS Excel | application/vnd.openxmlformats-officedocument.spreadsheetml.sheet |
Open Office sheet | application/x-vnd.oasis.opendocument.spreadsheet |
|
application/pdf |
||
CSV (first sheet only) | text/csv |
|
TSV (first sheet only) | text/tab-separated-values |
|
HTML (zipped) | application/zip |
|
Drawings | JPEG | image/jpeg |
PNG | image/png |
|
SVG | image/svg+xml |
|
application/pdf |
||
Presentations | MS PowerPoint | application/vnd.openxmlformats-officedocument.presentationml.presentation |
Open Office presentation | application/vnd.oasis.opendocument.presentation |
|
application/pdf |
||
Plain text | text/plain |
|
Apps Scripts | JSON | application/vnd.google-apps.script+json |
Source here:
https://developers.google.com/drive/v3/web/manage-downloads#downloading_google_documents
the table under:
«Google Doc formats and supported export MIME types map to each other as follows»
There is also another list
MIME Type | Description |
---|---|
application/vnd.google-apps.audio |
|
application/vnd.google-apps.document |
Google Docs |
application/vnd.google-apps.drawing |
Google Drawing |
application/vnd.google-apps.file |
Google Drive file |
application/vnd.google-apps.folder |
Google Drive folder |
application/vnd.google-apps.form |
Google Forms |
application/vnd.google-apps.fusiontable |
Google Fusion Tables |
application/vnd.google-apps.map |
Google My Maps |
application/vnd.google-apps.photo |
|
application/vnd.google-apps.presentation |
Google Slides |
application/vnd.google-apps.script |
Google Apps Scripts |
application/vnd.google-apps.site |
Google Sites |
application/vnd.google-apps.spreadsheet |
Google Sheets |
application/vnd.google-apps.unknown |
|
application/vnd.google-apps.video |
|
application/vnd.google-apps.drive-sdk |
3rd party shortcut |
Source here:
https://developers.google.com/drive/v3/web/mime-types
But the first one was more helpful for my use case.
answered Mar 29, 2018 at 8:54
LuckylookeLuckylooke
3,8613 gold badges31 silver badges48 bronze badges
1
Я видел application/csv
и text/csv
.
в чем разница? Есть ли разница? Имеет ли значение, что, пока запрос соответствует чему-то, что доступно? Они взаимозаменяемы?
5 ответов
RFC 7111
есть RFC который покрывает его и говорит, чтобы использовать text/csv
.
этот RFC обновляет RFC 4180.
в Excel
недавно я обнаружил явный тип mimetype для приложения Excel / vnd.ms-excel. Он был зарегистрирован в в IANA в 96 году. Обратите внимание на опасения, высказанные по поводу пребывания в милости отправителя и наличие вашей машины нарушено!—18—>.
тип носителя: application / vnd.ms-excel
имя Microsoft Excel ™
обязательные параметры: нет
Дополнительные параметры: name
соображения кодирования: base64 предпочтительнее
соображений безопасности: как и в большинстве типов приложений эти данные
предназначен для интерпретации программой, которая понимает данные
получатель система. Получатели должны понимать, что они
«милосердие» отправителя при получении такого типа данных, поскольку
данные будут выполнены на их системе, и обеспеченность их
машины могут быть нарушены.OID { org-id ms-files (4) ms-excel (3) }
таблица типов объектов
комментарии Этот тип носителя / OID используется для идентификации Microsoft
Excel в целом (т. е. независимо от версии, подтипа или формат платформы).
Я не знал, что расширения поставщиков разрешены. Проверьте ответ чтобы узнать больше — спасибо starbeamrainbowlabs для справки.
444
автор: Chris McCauley
вы должны использовать «текст / csv» в соответствии с RFC 4180.
странное поведение с MS Excel
:
Если я экспортирую в » текстовый формат, разделенный запятыми (csv
) » Это тип mime, который я получаю после загрузки на моем веб-сервере:
[name] => data.csv
[type] => application/vnd.ms-excel
таким образом, Microsoft, похоже, снова делает собственные вещи, независимо от существующих стандартов:https://en.wikipedia.org/wiki/Comma-separated_values
мои пользователи могут загружать 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
для тех, кто борется с Google API mimeType для *.CSV-файл.
Я нашел список типов MIME для файлов документов 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
стол под:
«Форматы 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
но первый был более полезен для моего случая использования..
удачи в кодировании
Здесь представлен исчерпывающий список типов MIME, соотнесённых с типами документов и отсортированных по расширению.Два ключевых типа MIME, использующихся в качестве типов по умолчанию:
text/plain
является типом по умолчанию для текстовых файлов. Текстовый файл должен быть читаемым человеком и не должен содержать в себе бинарную информацию.application/octet-stream
является типом по умолчанию для всех остальных случаев. Нужно использовать этот тип, если тип файла неизвестен. Браузеры уделяют дополнительное внимание при работе с данным типом файлов для предотвращения вредоносного поведения.
IANA является официальным регистром типов MIME и поддерживает их официальный список. В данной таблице представлен список типов, наиболее важных для Web:
Расширение | Тип документа | Тип MIME |
---|---|---|
.aac |
AAC audio | audio/aac |
.abw |
AbiWord document | application/x-abiword |
.arc |
Archive document (multiple files embedded) | application/x-freearc |
.avi |
AVI: Audio Video Interleave | video/x-msvideo |
.azw |
Amazon Kindle eBook format | application/vnd.amazon.ebook |
.bin |
Any kind of binary data | application/octet-stream |
.bmp |
Windows OS/2 Bitmap Graphics | image/bmp |
.bz |
BZip archive | application/x-bzip |
.bz2 |
BZip2 archive | application/x-bzip2 |
.csh |
C-Shell script | application/x-csh |
.css |
Cascading Style Sheets (CSS) | text/css |
.csv |
Comma-separated values (CSV) | text/csv |
.doc |
Microsoft Word | application/msword |
.docx |
Microsoft Word (OpenXML) | application/vnd.openxmlformats-officedocument.wordprocessingml.document |
.eot |
MS Embedded OpenType fonts | application/vnd.ms-fontobject |
.epub |
Electronic publication (EPUB) | application/epub+zip |
.gz |
GZip Compressed Archive | application/gzip |
.gif |
Graphics Interchange Format (GIF) | image/gif |
.htm .html |
HyperText Markup Language (HTML) | text/html |
.ico |
Icon format | image/vnd.microsoft.icon |
.ics |
iCalendar format | text/calendar |
.jar |
Java Archive (JAR) | application/java-archive |
.jpeg .jpg |
JPEG images | image/jpeg |
.js |
JavaScript | text/javascript |
.json |
JSON format | application/json |
.jsonld |
JSON-LD format | application/ld+json |
.mid .midi |
Musical Instrument Digital Interface (MIDI) | audio/midi audio/x-midi |
.mjs |
JavaScript module | text/javascript |
.mp3 |
MP3 audio | audio/mpeg |
.mpeg |
MPEG Video | video/mpeg |
.mpkg |
Apple Installer Package | application/vnd.apple.installer+xml |
.odp |
OpenDocument presentation document | application/vnd.oasis.opendocument.presentation |
.ods |
OpenDocument spreadsheet document | application/vnd.oasis.opendocument.spreadsheet |
.odt |
OpenDocument text document | application/vnd.oasis.opendocument.text |
.oga |
OGG audio | audio/ogg |
.ogv |
OGG video | video/ogg |
.ogx |
OGG | application/ogg |
.opus |
Opus audio | audio/opus |
.otf |
OpenType font | font/otf |
.png |
Portable Network Graphics | image/png |
.pdf |
Adobe Portable Document Format (PDF) | application/pdf |
.php |
Hypertext Preprocessor (Personal Home Page) | application/php |
.ppt |
Microsoft PowerPoint | application/vnd.ms-powerpoint |
.pptx |
Microsoft PowerPoint (OpenXML) | application/vnd.openxmlformats-officedocument.presentationml.presentation |
.rar |
RAR archive | application/vnd.rar |
.rtf |
Rich Text Format (RTF) | application/rtf |
.sh |
Bourne shell script | application/x-sh |
.svg |
Scalable Vector Graphics (SVG) | image/svg+xml |
.swf |
Small web format (SWF) or Adobe Flash document | application/x-shockwave-flash |
.tar |
Tape Archive (TAR) | application/x-tar |
.tif .tiff |
Tagged Image File Format (TIFF) | image/tiff |
.ts |
MPEG transport stream | video/mp2t |
.ttf |
TrueType Font | font/ttf |
.txt |
Text, (generally ASCII or ISO 8859-n) | text/plain |
.vsd |
Microsoft Visio | application/vnd.visio |
.wav |
Waveform Audio Format | audio/wav |
.weba |
WEBM audio | audio/webm |
.webm |
WEBM video | video/webm |
.webp |
WEBP image | image/webp |
.woff |
Web Open Font Format (WOFF) | font/woff |
.woff2 |
Web Open Font Format (WOFF) | font/woff2 |
.xhtml |
XHTML | application/xhtml+xml |
.xls |
Microsoft Excel | application/vnd.ms-excel |
.xlsx |
Microsoft Excel (OpenXML) | application/vnd.openxmlformats-officedocument.spreadsheetml.sheet |
.xml |
XML |
application/xml if not readable from casual users (RFC 3023, section 3) text/xml if readable from casual users (RFC 3023, section 3) |
.xul |
XUL | application/vnd.mozilla.xul+xml |
.zip |
ZIP archive | application/zip |
.3gp |
3GPP audio/video container | video/3gpp audio/3gpp if it doesn’t contain video |
.3g2 |
3GPP2 audio/video container | video/3gpp2 audio/3gpp2 if it doesn’t contain video |
.7z |
7-zip archive | application/x-7z-compressed |
Я пытаюсь разрешить пользователю загружать файл csv и открывать его с помощью Excel (предпочтительно с уже выбранным вариантом «Открыть файл с Excel»).
//Cont.cs
public ActionResult CSVLink(string file)
{
var dir = Server.MapPath("/CSV/Stats");
var path = Path.Combine(dir, file + ".csv"); // I have tried this both with and w/o adding the csv here, and on the anchor href instead
return File(path, "application/csv");
}
//Links.cshtml
<a target="_blank" href="/CSVLink?file=Hits_20150616">Today Hits</a>
Это в основном работает, так как в нем пользователь может загрузить файл, но расширение файла не сохраняется как csv. Кажется, что проблема связана с return File(path, "application/csv");
, и более конкретно application/csv
.
Вот список того, что происходит с различными типами mime:
-
application/csv
— загрузка файла, но не имеет расширения файла -
text/csv
— тот же -
application/binary
— тот же -
application/vnd.ms-excel
— Файл загружается как файл.xls, который испортит его внешний вид в Excel.
Вот еще одна странная вещь: все файлы, которые не имеют расширений, если я их переименую и поставлю.csv в конце, они открываются в Excel, выглядя идеально. Это происходит как в IE, так и в Firefox (кроме octet-stream
, что делает его открытым как обычный текст на новой веб-странице).
Что я делаю не так?
@taemon1337 @vladatnyc Parsing non-text files will result in undefined behavior. So how about a new config option called typeSafety
which, if true, would keep the current, default behavior (true
would be the default value). If false, however, the parser would not perform a type check, and parsing files of an unsupported type will result in undefined behavior. (But hey, you disabled the safety. Read on for a work-around.)
Right now, the type check is performed before calling the user’s before
callback. I can reverse this so that the user’s before
is called even before the type check, so your own code could inspect the file type and handle it accordingly in those cases where you may still want some sort of type checking, but you want it to be more lenient. (Update: actually, duh, if the type check is disabled, whether it is run before or after the user’s before
is irrelevant.)
That sound alright?