Tôi nên sử dụng loại MIME nào cho CSV?


454

Tôi đã thấy application/csvsử dụng và cũng có text/csv.

Có gì khác biệt? Có sự khác biệt? Có vấn đề gì miễn là yêu cầu phù hợp với thứ gì đó có sẵn không? Họ có thể thay thế cho nhau?

Câu trả lời:


623

RFC 7111

Có một RFC bao gồm nó và nói để sử dụng text/csv.

RFC này cập nhật RFC 4180.


Excel

Gần đây, tôi phát hiện ra một mô hình rõ ràng cho ứng dụng Excel / vnd.ms-excel. Nó đã được đăng ký với IANA vào năm 96. Lưu ý những lo ngại được nêu ra về sự thương xót của người gửimáy của bạn bị vi phạm .

Loại phương tiện: ứng dụng / vnd.ms-excel

Tên Microsoft Excel (tm)

Thông số bắt buộc: Không có

Thông số tùy chọn: tên

Cân nhắc mã hóa: ưu tiên base64

Cân nhắc bảo mật: Giống như hầu hết các loại ứng dụng, dữ liệu này được dự định để giải thích bởi một chương trình hiểu dữ liệu trên hệ thống của người nhận. Người nhận cần phải hiểu rằng họ đang "thương xót" người gửi, khi nhận loại dữ liệu này, vì dữ liệu sẽ được thực thi trên hệ thống của họ và bảo mật của máy có thể bị vi phạm.

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

Bảng tính loại đối tượng

Nhận xét Loại phương tiện / OID này được sử dụng để xác định Microsoft Excel một cách tổng quát (nghĩa là độc lập với phiên bản, kiểu con hoặc định dạng nền tảng).

Tôi không biết rằng các phần mở rộng của nhà cung cấp đã được cho phép. Kiểm tra câu trả lời này để tìm hiểu thêm - cảm ơn starbeamrainbowlabs để tham khảo.


39
CSV là định dạng tệp văn bản, tại sao Excel có liên quan đến nó hoặc tôi thiếu thứ gì?
JimmyPena

25
Chương trình mở một loại tệp không liên quan gì đến loại MIME được liên kết của loại tệp đó.
Pablo Pazos

7
@Pablo Tôi đã cài đặt Excel trên máy Windows và tạo CSV trong Notepad ++ sẽ chỉ định loại ứng dụng MIME / vnd.ms-excel. Hãy tự mình thử và kiểm tra loại MIME của bạn tại mime.ritey.com
pjd

20
Notepad ++ không "gán" bất kỳ loại mime nào, dịch vụ bạn sử dụng đang gán nó.
Pablo Pazos

14
Wow, rất nhiều người đau mông khi đề cập đến vnd.ms-excel. +1, tôi nghĩ rằng đó là một ghi chú thú vị;)
Wesley Smith

95

Bạn nên sử dụng "văn bản / csv" theo RFC 4180 .


1
Có phải "text / csv" cũng chấp nhận các tệp ".txt" không? Tôi đang làm việc để áp dụng xác nhận ở phía máy chủ để chỉ chấp nhận các loại tệp ".csv". Nhưng các tệp ".txt" cũng được chấp nhận. Vui lòng xác nhận.
SukanyaPai

1
xin lỗi nhưng không thấy câu hỏi của bạn cho đến nay. RFC 4180 đảm bảo rằng phần mở rộng phải là .csv. Tuy nhiên, bạn có thể biết, đó không phải là một yêu cầu nghiêm ngặt. Bạn có thể phá vỡ việc triển khai RFC 4180, nhưng cá nhân tôi sẽ không làm điều đó, vì nó làm xáo trộn khả năng đọc của ứng dụng.
Khói chân

47

Hành vi kỳ lạ với MS Excel: Nếu tôi xuất thành "định dạng dựa trên văn bản, được phân tách bằng dấu phẩy ( csv)" thì đây là loại mime tôi nhận được sau khi tải lên trên máy chủ web của mình:

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

Vì vậy, Microsoft dường như đang làm lại mọi thứ, bất kể các tiêu chuẩn hiện có: https://en.wikipedia.org/wiki/Comma-separated_values


4
Bạn không thể thực sự tin tưởng loại mime được gửi bởi các khách hàng web, nó chỉ là một hướng dẫn nói chung.
Chris Seufert

5
Điều này là do cấu hình của máy chủ web ánh xạ phần mở rộng tệp thành loại mime. Microsofts IIS nên sử dụng sổ đăng ký máy chủ cho cài đặt Excel được cài đặt trên Excel nếu nó được cài đặt trên máy chủ web.
Andrew Russell

5
Chà ... Xem xét rằng "tiêu chuẩn hiện có" đã quyết định bỏ qua những gì đã được sử dụng khi họ quyết định định nghĩa CSV trong RFC 4180 được viết vào tháng 10 năm 2005, sẽ thật ngớ ngẩn khi đổ lỗi cho Microsoft vì đã không nhảy vào tương lai Xem những gì cơ quan tiêu chuẩn quyết định và sau đó sử dụng trở lại khi họ lần đầu tiên viết excel vào năm 1985. Bạn đang cài đặt phiên bản excel nào?
Robert McKee

1
Ngoài mọi thứ khác, excel sẽ thu thập các giá trị trường trong tệp CSV.
Ronnie Overby

35

Người dùng của tôi được phép upload file CSV và text/csvapplication/csvđã không xuất hiện bởi bây giờ. Đây là những cái được xác định thông qua finfo () :

text/plain
text/x-csv

Và đây là những cái được truyền qua trình duyệt:

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

Các loại sau không xuất hiện, nhưng có thể:

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

1
Các trình duyệt đoán những gì sẽ gửi dưới dạng MIME của một tệp trong khi tải lên. Bạn có thể từ chối những thứ bạn không muốn làm gì, nhưng kiểm tra nội dung thực sự của tệp một cách cẩn thận là cách duy nhất để chắc chắn những gì đã được tải lên.
Tetsujin no Oni

văn bản / tab được phân tách-giá trị về mặt kỹ thuật không phải là tệp CSV; hoặc bạn có nghĩa là bạn cũng có thể lấy nó ngay cả đối với dữ liệu được phân tách bằng dấu phẩy?
Arthur

@Arthur Vui lòng sử dụng danh mục tệp TSV bổ sung. Tôi bỏ qua các điều khoản khác bởi vì nhiều chương trình tạo một tệp có phần mở rộng .csv bất kể sử dụng dấu phân cách nào và PHP - là ngôn ngữ phía máy chủ được sử dụng nhiều nhất - cũng chỉ sử dụng thuật ngữ CSV. Gọi nó là "các tệp được phân tách bằng ký tự" và bạn vẫn ổn;)
mgutt

0

Đối với bất kỳ ai đang vật lộn với Google API mimeType cho các tệp * .csv. Tôi đã tìm thấy danh sách các loại MIME cho các tệp tài liệu api của google (xem kết quả được chụp)

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

Nguồn tại đây: https://developers.google.com/drive/v3/web/manage-doads#doading_google_document bảng bên dưới: "Định dạng Google Doc và hỗ trợ xuất các loại MIME ánh xạ cho nhau như sau"

Ngoài ra còn có một danh sách khác

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

Nguồn tại đây: https://developers.google.com/drive/v3/web/mime-types

Nhưng cái đầu tiên hữu ích hơn cho trường hợp sử dụng của tôi ..

Chúc mừng mã hóa;)


Các quy tắc stackoverflow là bao gồm các câu trả lời nội tuyến không có liên kết đến các nền tảng khác.
paul_h

@paul_h Tôi muốn, nhưng vui lòng cho tôi biết cách định dạng các bảng đó thành dạng hợp lý cho SO, vì SO không hỗ trợ các bảng ngay bây giờ.
Luckylooke

1
@paul_h Tôi đã tìm được đường, hy vọng bạn thích nó;)
Luckylooke

Thêm một vì các bảng được định dạng đẹp :)
Stijn de Witt
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.