Jenis MIME apa yang harus saya gunakan untuk CSV?


454

Saya telah melihat application/csv digunakan dan jugatext/csv .

Apa bedanya? Apakah ada perbedaan? Apakah itu penting yang mana selama permintaan cocok dengan sesuatu yang tersedia? Apakah bisa dipertukarkan?

Jawaban:


623

RFC 7111

Ada RFC yang menutupinya dan mengatakan untuk menggunakannyatext/csv .

RFC ini memperbarui RFC 4180.


Unggul

Baru-baru ini saya menemukan mimetype eksplisit untuk aplikasi Excel / vnd.ms-excel. Itu terdaftar dengan IANA di '96. Perhatikan kekhawatiran yang muncul tentang berada di tangan pengirim dan mesin Anda dilanggar .

Jenis Media: application / vnd.ms-excel

Beri nama Microsoft Excel (tm)

Parameter yang diperlukan: Tidak ada

Parameter opsional: nama

Pertimbangan pengkodean: base64 lebih disukai

Pertimbangan keamanan: Seperti kebanyakan jenis aplikasi data ini dimaksudkan untuk interpretasi oleh program yang memahami data pada sistem penerima. Penerima perlu memahami bahwa mereka berada di "belas kasihan" pengirim, ketika menerima jenis data ini, karena data akan dieksekusi pada sistem mereka, dan keamanan mesin mereka dapat dilanggar.

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

Spreadsheet jenis objek

Komentar Jenis Media / OID ini digunakan untuk mengidentifikasi Microsoft Excel secara umum (yaitu, tidak tergantung pada versi, subtipe, atau format platform).

Saya tidak tahu bahwa ekstensi vendor diizinkan. Lihatlah jawaban ini untuk mencari tahu lebih lanjut - terima kasih starbeamrainbowlabs untuk referensi ini.


39
CSV adalah format file teks, mengapa Excel ada hubungannya dengan itu, atau saya kehilangan sesuatu?
JimmyPena

25
Bahwa suatu program membuka tipe file tidak ada hubungannya dengan tipe MIME terkait dari tipe file itu.
Pablo Pazos

7
@Pablo Saya sudah menginstal Excel di mesin Windows, dan membuat CSV di Notepad ++ akan menetapkan jenis aplikasi MIME / vnd.ms-excel. Cobalah sendiri dan periksa jenis MIME Anda di mime.ritey.com
pjd

20
Notepad ++ tidak "menetapkan" jenis pantomim apa pun, layanan yang Anda gunakan menugaskannya.
Pablo Pazos

14
Wow, banyak orang yang terluka karena disebutkan vnd.ms-excel. +1, saya pikir itu adalah not samping yang menarik;)
Wesley Smith

95

Anda harus menggunakan "text / csv" sesuai dengan RFC 4180 .


1
Apakah "text / csv" menerima ".txt" file juga? Saya berupaya menerapkan validasi di sisi server untuk hanya menerima tipe file ".csv". Tetapi file ".txt" juga diterima. Mohon konfirmasi.
SukanyaPai

1
maaf tapi belum melihat pertanyaan Anda sejauh ini. RFC 4180 memastikan bahwa ekstensi harus .csv. Namun demikian, Anda mungkin tahu, itu bukan persyaratan yang ketat. Anda dapat merusak implementasi RFC 4180, tetapi secara pribadi saya tidak akan melakukan itu, karena mengganggu keterbacaan aplikasi.
Smokefoot

47

Perilaku aneh dengan MS Excel: Jika saya mengekspor ke "berbasis teks, format yang dipisahkan koma ( csv)" ini adalah tipe mime yang saya dapatkan setelah mengunggah di server web saya:

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

Jadi Microsoft tampaknya akan melakukan hal-hal mereka sendiri lagi, terlepas dari standar yang ada: https://en.wikipedia.org/wiki/Comma-separated_values


4
Anda benar-benar tidak dapat mempercayai tipe pantomim yang dikirim oleh klien web, itu hanya panduan umum.
Chris Seufert

5
Ini karena konfigurasi server-web yang memetakan ekstensi file ke tipe mime. Microsoft IIS harus menggunakan registri server untuk ini yang diisi oleh instalasi Excel jika diinstal pada server web.
Andrew Russell

5
Yah ... Menimbang bahwa "standar yang ada" memutuskan untuk mengabaikan apa yang sudah digunakan ketika mereka memutuskan untuk mendefinisikan CSV di RFC 4180 yang ditulis pada Oktober 2005, akan konyol untuk menyalahkan Microsoft karena tidak melompat ke masa depan untuk lihat apa yang diputuskan oleh badan standar dan kemudian gunakan kembali ketika mereka pertama kali menulis excel pada tahun 1985. Versi excel apa yang Anda pasang?
Robert McKee

1
Di atas segalanya, excel akan memotong-motong nilai bidang dalam file CSV.
Ronnie Overby

35

Pengguna saya diizinkan untuk mengunggah file CSV dan text/csvdan application/csvtidak muncul sekarang. Ini adalah yang diidentifikasi melalui finfo () :

text/plain
text/x-csv

Dan ini adalah yang dikirimkan melalui browser:

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

Jenis-jenis berikut ini tidak muncul, tetapi dapat:

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

1
Peramban menebak apa yang harus dikirim sebagai jenis file MIME selama unggahan. Anda dapat menolak yang tidak Anda inginkan, tetapi memeriksa konten sebenarnya dari file dengan hati-hati adalah satu-satunya cara untuk memastikan apa yang telah diunggah.
Tetsujin no Oni

nilai teks / tab-dipisahkan-secara teknis bukan file CSV; atau maksud Anda, Anda juga bisa mendapatkannya bahkan untuk data yang dipisahkan koma?
Arthur

@Arthur Jangan ragu untuk menggunakan kategori file TSV tambahan. Saya mengabaikan persyaratan lain karena banyak program membuat file dengan ekstensi .csv tidak peduli pembatas mana yang digunakan dan PHP - sebagai bahasa sisi server yang paling banyak digunakan - menggunakan istilah CSV hanya dalam fungsinya saja. Sebut saja "file yang dipisahkan karakter" dan Anda baik-baik saja;)
mgutt

0

Bagi siapa pun yang kesulitan dengan Google API mimeType untuk file * .csv. Saya telah menemukan daftar tipe MIME untuk file google api docs (lihat hasil potongan)

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

Sumber di sini: https://developers.google.com/drive/v3/web/manage-downloads#downloading_google_documents tabel di bawah: "Google Doctforms dan mendukung ekspor jenis MIME peta satu sama lain sebagai berikut"

Ada juga daftar lain

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

Sumber di sini: https://developers.google.com/drive/v3/web/mime-types

Tapi yang pertama lebih bermanfaat untuk kasus penggunaan saya ..

Selamat coding;)


Aturan aliran balik adalah untuk menyertakan jawaban sebaris tidak ada tautan ke platform lain.
paul_h

@paul_h saya ingin, tapi tolong katakan padaku bagaimana memformat tabel-tabel itu menjadi bentuk yang masuk akal untuk SO, karena SO tidak mendukung tabel sekarang.
Luckylooke

1
@ paul_h Saya telah menemukan jalannya, harap Anda menyukainya;)
Luckylooke

Plus satu karena tabel yang diformat cantik :)
Stijn de Witt
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.