Jakiego typu MIME powinienem użyć dla CSV?


454

Widziałem application/csvużywane, a także text/csv.

Co za różnica? Czy jest jakaś różnica? Czy to ważne, o ile żądanie pasuje do czegoś, co jest dostępne? Czy są wymienne?

Odpowiedzi:


623

RFC 7111

Jest RFC, który obejmuje to i mówi, aby użyćtext/csv .

To RFC aktualizuje RFC 4180.


Przewyższać

Ostatnio odkryłem wyraźny typ mimetyczny dla aplikacji Excel / vnd.ms-excel. Został zarejestrowany w IANA w 96 roku. Zwróć uwagę na obawy związane z byciem na łasce nadawcy i naruszeniem komputera .

Typ nośnika: application / vnd.ms-excel

Nazwa Microsoft Excel (tm)

Wymagane parametry: brak

Parametry opcjonalne: nazwa

Uwagi dotyczące kodowania: preferowany base64

Względy bezpieczeństwa: Podobnie jak w przypadku większości typów aplikacji, dane te są przeznaczone do interpretacji przez program, który rozumie dane w systemie odbiorcy. Odbiorcy muszą zrozumieć, że są na „łasce” nadawcy, odbierając ten typ danych, ponieważ dane zostaną wykonane w ich systemie, a bezpieczeństwo ich komputerów może zostać naruszone.

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

Arkusz kalkulacyjny typu obiektu

Komentarze Ten typ nośnika / identyfikator OID służy do ogólnej identyfikacji programu Microsoft Excel (tj. Niezależnie od wersji, podtypu lub formatu platformy).

Nie wiedziałem, że rozszerzenia dostawców są dozwolone. Sprawdź tę odpowiedź, aby dowiedzieć się więcej - dzięki starbeamrainbowlabs za odniesienie.


39
CSV to format pliku tekstowego, dlaczego Excel miałby z tym mieć coś wspólnego, czy czegoś mi brakuje?
JimmyPena,

25
To, że program otwiera typ pliku, nie ma nic wspólnego z powiązanym typem MIME tego typu pliku.
Pablo Pazos

7
@Pablo Mam program Excel zainstalowany na komputerze z systemem Windows, a utworzenie pliku CSV w Notepad ++ spowoduje przypisanie typu MIME aplikacji / vnd.ms-excel. Wypróbuj sam i sprawdź swój typ MIME na mime.ritey.com
pjd

20
Notepad ++ nie „przypisuje” żadnego typu MIME, usługa, której używasz, przypisuje go.
Pablo Pazos

14
Wow, wiele osób bolało z powodu wzmianki o vnd.ms-excel. +1, pomyślałem, że to ciekawa dodatkowa uwaga;)
Wesley Smith,

95

Powinieneś używać „text / csv” zgodnie z RFC 4180 .


1
Czy „text / csv” akceptuje również pliki „.txt”? Pracuję nad zastosowaniem sprawdzania poprawności po stronie serwera, aby zaakceptować typy plików „.csv”. Ale pliki „.txt” również są akceptowane. Proszę potwierdzić.
SukanyaPai,

1
przepraszam, ale do tej pory nie widziałem twojego pytania. RFC 4180 upewnia się, że rozszerzenie powinno mieć rozszerzenie .csv. Niemniej jednak możesz wiedzieć, że nie jest to ścisły wymóg. Możesz przerwać implementację RFC 4180, ale osobiście nie zrobiłbym tego, ponieważ przeszkadza to w czytelności aplikacji.
Smokefoot

47

Dziwne zachowanie z MS Excel: Jeśli eksportuję do formatu „tekstowego, rozdzielanego przecinkami ( csv)”, to jest ten typ MIME, który otrzymuję po przesłaniu na mój serwer:

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

Wydaje się, że Microsoft znów robi swoje, bez względu na istniejące standardy: https://en.wikipedia.org/wiki/Comma-separated_values


4
Naprawdę nie można ufać typowi MIME wysyłanemu przez klientów internetowych, jest to tylko przewodnik.
Chris Seufert

5
Wynika to z konfiguracji serwera WWW, który mapuje rozszerzenie pliku na typ MIME. Microsofts IIS powinien do tego celu wykorzystać rejestr serwerów, który jest wypełniany przez instalację programu Excel, jeśli jest on zainstalowany na serwerze WWW.
Andrew Russell,

5
Cóż ... Biorąc pod uwagę, że „istniejący standard” postanowił zignorować to, co było już w użyciu, gdy zdecydowali się zdefiniować CSV w RFC 4180, który został napisany w październiku 2005 r., Głupio byłoby winić Microsoft za to, że nie skoczył w przyszłość, aby zobacz, co decyduje organ normalizacyjny, a następnie skorzystaj z niego, kiedy po raz pierwszy napisał program Excel w 1985 roku. Jaką wersję programu Excel instalujesz?
Robert McKee,

1
Oprócz wszystkiego, excel będzie zmieniał wartości pól w pliku CSV.
Ronnie Overby

35

Moi użytkownicy mogą przesyłać pliki CSV i text/csvi application/csvnie pojawiają się teraz. Są to te zidentyfikowane przez finfo () :

text/plain
text/x-csv

A są to te przesyłane przez przeglądarkę:

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

Następujące typy nie pojawiły się, ale mogły:

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

1
Przeglądarki zgadują, co wysłać jako typ pliku MIME podczas przesyłania. Możesz odrzucić te z ręki, z którymi nie chcesz mieć nic wspólnego, ale uważne sprawdzanie rzeczywistej zawartości pliku jest jedynym sposobem, aby upewnić się, co zostało przesłane.
Tetsujin no Oni

wartości rozdzielane tekstem / tabulatorami technicznie nie są plikiem CSV; czy masz na myśli, że możesz go zdobyć nawet dla danych oddzielonych przecinkami?
Arthur

@Arthur Możesz użyć dodatkowej kategorii plików TSV. Ignoruję inne terminy, ponieważ wiele programów tworzy plik z rozszerzeniem .csv bez względu na to, który separator jest używany, a PHP - jako najczęściej używany język po stronie serwera - używa również terminu CSV tylko w swoich funkcjach. Nazwij to „plikami rozdzielonymi znakami” i nic ci nie będzie;)
mgutt

0

Dla każdego, kto zmaga się z Google API mimeType dla plików * .csv. Znalazłem listę typów MIME dla plików dokumentów Google api (popatrz na wycięty wynik)

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

Źródło tutaj: https://developers.google.com/drive/v3/web/manage-downloads#downloading_google_documents tabelę pod: „Formaty Dokumentów Google i obsługiwane eksportowanie map typów MIME do siebie w następujący sposób”

Jest też inna 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>

Źródło tutaj: https://developers.google.com/drive/v3/web/mime-types

Ale pierwszy był bardziej pomocny w moim przypadku użycia.

Szczęśliwego kodowania;)


Reguły przepełnienia stosu muszą zawierać odpowiedzi bez linku do innych platform.
paul_h

@paul_h Chciałbym, ale proszę powiedz mi, jak sformatować te tabele w rozsądnej formie dla SO, ponieważ SO nie obsługuje obecnie tabel.
Luckylooke

1
@paul_h Znalazłem drogę, mam nadzieję, że ci się spodoba;)
Luckylooke

Plus jeden z powodu ładnie sformatowanych tabel :)
Stijn de Witt
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.