JavaScript读取MIME类型CSV始终为空

6

我目前在使用Windows浏览器检查csv文件的mimetype时遇到了困难。我已经尝试通过以下方式进行检查:

console.log($('#file')[0].files[0].type); // output: ""

但是,当我使用Linux浏览器时,它可以正常工作:
console.log($('#file')[0].files[0].type); // output: "text/csv"

这是怎么发生的?有没有其他可行的解决方案?非常感谢您的帮助。
以下是我Windows和浏览器的详细信息:
- Chromium 50.0.2632.0 - Windows 10 Pro 64位
更新1:
当我试图上传jpg / png或任何图像文件时,Chromium可以检测到它们的MIME类型。

很抱歉,英语不是我的母语。


当你说“Windows浏览器”时,你是指使用Chromium还是Internet Explorer? - RayfenWindspear
我在Windows上没有IE。我使用Edge,但仍然返回一个空字符串。 - krisanalfa
我们也遇到了同样的问题。在我的Windows电脑上,我得到的CSV文件的MIME类型是'application/vnd.ms-excel',但是我的两个同事却得到了空的“”。不确定是什么原因导致了这个问题。它可能与浏览器无关,但可能与环境有关,因为我们三个人都在使用Chrome。 - user441380
4个回答

1
主要问题是 - 如果您有 Microsoft Office,则您的浏览器将正常工作并且可以看到 csv 类型,如果您没有它,则无法查看。

你的回答可以通过添加更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心找到有关如何编写良好答案的更多信息。 - Community

1
浏览器根据其了解的扩展名来设置MIME类型。Internet Explorer没有.csv文件的MIME类型(在此处查看列表)。我建议在IE上手动检查.csv文件扩展名。或者,您可以使用比IE更多的外部库。
最终放置在file.type中的内容由浏览器设置。您需要使用库(我找不到一个),或使用类似此建议的switch语句手动检查扩展名。
您可以查找MIME类型列表,并添加您认为会遇到的类型。
编辑
浏览器还提供了FileReader对象。您可以使用它在客户端检查文件。由于JavaScript是单线程的,我不知道它如何处理大文件(这是一个链接)

实际上,我的客户同意使用Google Chrome / Chrome /任何基于WebKit的浏览器。换句话说,他们愿意不使用IE。问题是,Chromium或Google Chrome无法检测到csv mime类型。 - krisanalfa
感谢你啊,我非常感激。根据你的建议,也许我得把它上传到服务器并检查它是否是有效的CSV文件(也许在Windows中的JavaScript无法处理这个问题,或者只是某个地方的配置问题)。 - krisanalfa
服务器端针对这个问题有更多的选项,至少根据我查阅的所有来源是这样的。 - RayfenWindspear
1
你也可以检查文件开头的魔数来确定MIME类型,但要小心,因为将标准文本文件重命名为.csv是完全有效的。 - RayfenWindspear
我尝试过这个解决方案。它可以工作,但正如你所说,当用户想要上传大文件时,它并不好。 - krisanalfa
如果您将HEIF/HEIC文件拖放到Windows上的Firefox中,这也会发生。显然,Firefox对这些“晦涩”的格式一无所知。 - ADTC

0

我觉得这可能是chrome或win10的一个bug。我使用的操作系统和浏览器和你一样。但在Firefox中导入时,它显示了文件类型。这是我检查过的两个浏览器:

  • Chrome

enter image description here

火狐浏览器

enter image description here

p/s: 我遇到了一个问题,我只想让用户导入CSV文件。但在Chrome中,文件类型是空的,因此我无法在此处进行条件检查。


0

File.Type 是基于客户端配置来解析的。如果客户端配置中没有配置 .csv,则它将返回一个空字符串。

有关此问题的说明可在 link 上找到。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接