操作系统和浏览器的版本不同,所读取的csv文件MIMEType也不同
- CSV文件的MIMEType
'text/csv', 'text/plain', 'application/csv', 'text/comma-separated-values', 'application/excel', 'application/vnd.ms-excel', 'application/vnd.msexcel', 'text/anytext', 'application/octet-stream', 'application/txt',
- 为了兼容,需判段
const mimeTypes = [
'text/csv',
'text/plain',
'application/csv',
'text/comma-separated-values',
'application/excel',
'application/vnd.ms-excel',
'application/vnd.msexcel',
'text/anytext',
'application/octet-stream',
'application/txt'
]
const isCsv = mimeTypes.includes(file.type)
注:MDN 中指出MIME 类型不是传达文档类型信息的唯一方式
魔术数字:不同类型的文件的语法通过查看结构来允许文件类型推断,例如,每个 GIF 文件以 47 49 46 38 十六进制值 [GIF89] 或 89 50 4E 47 [.PNG] 的 PNG 文件开头。并非所有类型的文件都有幻数,所以这也不是 100%可靠的方式。由于 csv 文件并没有魔术数字,所以不能用这种方法判断 csv 文件类型