ฉันควรใช้ MIME ประเภทใดใน CSV?


454

ผมเคยเห็นใช้และapplication/csvtext/csv

ความแตกต่างคืออะไร? มีความแตกต่างหรือไม่? มันสำคัญไหมว่าตราบใดที่คำขอตรงกับสิ่งที่มีอยู่ พวกเขาใช้แทนกันได้หรือไม่

คำตอบ:


623

RFC 7111

มีความเป็นRFCtext/csvซึ่งครอบคลุมมันและพูดกับการใช้งาน

RFC นี้อัปเดต RFC 4180


สันทัด

เมื่อเร็ว ๆ นี้ฉันค้นพบ mimetype ที่ชัดเจนสำหรับแอปพลิเคชัน Excel / vnd.ms-excel มันลงทะเบียนกับIANAใน '96 หมายเหตุกังวลที่เกิดขึ้นเกี่ยวกับการเป็นที่เมตตาของผู้ส่งและมีเครื่องของคุณละเมิด

ประเภทสื่อ: application / vnd.ms-excel

ชื่อ Microsoft Excel (tm)

พารามิเตอร์ที่ต้องการ: ไม่มี

พารามิเตอร์ทางเลือก: ชื่อ

ข้อควรพิจารณาในการเข้ารหัส: แนะนำให้ใช้ base64

ข้อควรพิจารณาด้านความปลอดภัย: เช่นเดียวกับประเภทแอปพลิเคชันส่วนใหญ่ข้อมูลนี้มีไว้สำหรับการตีความโดยโปรแกรมที่เข้าใจข้อมูลในระบบของผู้รับ ผู้รับต้องเข้าใจว่าพวกเขาอยู่ที่ "ความเมตตา" ของผู้ส่งเมื่อได้รับข้อมูลประเภทนี้เนื่องจากข้อมูลจะถูกดำเนินการในระบบของพวกเขาและความปลอดภัยของเครื่องของพวกเขาอาจถูกละเมิด

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

สเปรดชีตประเภทวัตถุ

ความคิดเห็น Media Type / OID นี้ใช้เพื่อระบุ Microsoft Excel โดยทั่วไป (เช่นเป็นอิสระจากรุ่นย่อยหรือรูปแบบแพลตฟอร์ม)

ฉันไม่ทราบว่าอนุญาตส่วนขยายของผู้ขายได้ ลองอ่านคำตอบนี้เพื่อหาข้อมูลเพิ่มเติม - ขอบคุณstarbeamrainbowlabsสำหรับการอ้างอิง


39
CSV เป็นรูปแบบไฟล์ข้อความเหตุใด Excel จึงมีส่วนเกี่ยวข้องกับสิ่งนั้นหรือฉันขาดอะไรไป
JimmyPena

25
ว่าโปรแกรมเปิดไฟล์ประเภทไม่มีอะไรเกี่ยวข้องกับประเภท MIME ที่เกี่ยวข้องของประเภทไฟล์นั้น
Pablo Pazos

7
@Pablo ฉันมี Excel ติดตั้งบนเครื่อง Windows และการสร้าง CSV ใน Notepad ++ จะกำหนดประเภทแอปพลิเคชัน MIME / vnd.ms-excel ลองด้วยตัวคุณเองและตรวจสอบประเภท MIME ของคุณที่mime.ritey.com
pjd

20
Notepad ++ ไม่ "กำหนด" ประเภท mime ใด ๆ บริการที่คุณใช้กำลังกำหนด
Pablo Pazos

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-type ที่ส่งมาจากเว็บไคลเอ็นต์เป็นเพียงแนวทางโดยทั่วไป
Chris Seufert

5
นี่คือสาเหตุที่การกำหนดค่าของเว็บเซิร์ฟเวอร์ที่แมปนามสกุลไฟล์เป็นประเภท mime Microsofts IIS ควรใช้การลงทะเบียนเซิร์ฟเวอร์เพื่อทำการติดตั้ง Excel หากมีการติดตั้งบนเว็บเซิร์ฟเวอร์
Andrew Russell

5
อืม ... เมื่อพิจารณาว่า "มาตรฐานที่มีอยู่เดิม" ตัดสินใจเพิกเฉยต่อสิ่งที่ใช้ไปแล้วเมื่อพวกเขาตัดสินใจที่จะกำหนด CSV ใน RFC 4180 ซึ่งเขียนขึ้นในเดือนตุลาคมปี 2005 มันจะโง่ที่จะตำหนิ Microsoft สำหรับการกระโดดเข้าสู่อนาคต ดูสิ่งที่ร่างกายมาตรฐานตัดสินใจแล้วใช้สิ่งนั้นเมื่อพวกเขาเขียน excel กลับมาครั้งแรกในปี 1985 คุณเป็น excel รุ่นใด
Robert McKee

1
เหนือสิ่งอื่นใด excel จะทำการผสานค่าฟิลด์ในไฟล์ CSV
Ronnie Overby

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
เบราว์เซอร์จะเดาว่าจะส่งไฟล์ประเภทใดในขณะที่อัปโหลด คุณสามารถปฏิเสธสิ่งที่คุณไม่ต้องการทำอะไรได้ แต่การตรวจสอบเนื้อหาจริงของไฟล์ด้วยความระมัดระวังเป็นวิธีเดียวที่จะแน่ใจได้ว่าสิ่งใดได้รับการอัปโหลด
Tetsujin no Oni

ข้อความ / ค่าที่คั่นด้วยแท็บไม่ใช่เทคนิคไฟล์ CSV; หรือคุณหมายถึงคุณสามารถรับมันได้แม้สำหรับข้อมูลที่คั่นด้วยเครื่องหมายจุลภาคหรือไม่
Arthur

@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

แต่อันแรกก็มีประโยชน์มากกว่าสำหรับกรณีการใช้ของฉัน ..

Happy coding;)


กฎ Stackoverflow จะรวมคำตอบแบบอินไลน์โดยไม่มีลิงก์ไปยังแพลตฟอร์มอื่น
paul_h

@ paul_h ฉันต้องการ แต่โปรดบอกวิธีการจัดรูปแบบตารางเหล่านั้นในรูปแบบที่เหมาะสมสำหรับ SO เนื่องจาก SO ไม่สนับสนุนตารางในขณะนี้
Luckylooke

1
@paul_h ฉันได้พบวิธีหวังว่าคุณจะชอบมัน)
Luckylooke

บวกหนึ่งเพราะตารางการจัดรูปแบบสวย :)
Stijn เดอวิตต์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.