2011-08-03 45 views
0

我想要测试上传的文件是否为CSV文件,选择csv文件后再用此代码进行确认,并仍然给我发出不是CSV文件请帮我解决的消息。检查上传的文件是否为CSV文件

if($_FILES["file"]["type"] <> "application/vnd.ms-excel"){ 
    die("This is not a CSV file."); 
} 
+7

csv文件不是excel文件。 – marto

+0

为什么你不只是转储回来的类型,并对此进行测试? –

+0

如果它是一个文本文件,它可能是也可能不是一个CSV文件。你只能真正知道你是否试图解析它。另外,不要使用'$ _FILES ['type']'作为任何事情,因为这是完全未经验证的数据。 – deceze

回答

1

最简单的检查是“文件名是否以.csv结尾”。这会让你获得最大的方式,但有可能有人可以尝试上传带有CSV扩展名的其他内容。

您的下一个检查应该是该文件是文本(而不是二进制文件;请注意,Excel文件应该会失败)。要做到这一点,请检查ascii representation of each character:除回车符,换行符和制表符之外,应该没有小于32的值。

一旦您知道该文件是文本,就可以通过运行CSV parser并查看是否结果是无稽之谈。

+0

+1,可能希望将选项卡添加到允许的字符列表中。 –

+0

@Anders:很好地叫;我已经修复了文字。 –

相关问题