我想使用php验证服务器中的文件类型。现在,我通过检查文件的文件扩展名类型来验证它。这可以罚款,但问题是,这不是最好的方式来验证文件作为一个用户的一个改变,让说一个文本文件到一个jpeg,仍然能够上传。
所以我想做的是添加另一个验证方法,我还想使用php检查文件的mime类型,以识别文件是图像、视频还是音频。
所以我的问题是它是如何编码的,以便我可以在php中使用mime类型来验证一个文件?另外,如果我有一个非常大的文件,是否需要很长的时间才能启动mime验证,还是直接验证?
下面是我目前为image编写的代码,它仅在使用php代码检查文件类型时使用:<?php
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Error: " . $_FILES["file"]["error"] . "
";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "
";
echo "Type: " . $_FILES["file"]["type"] . "
";
}
}
else
{
echo "Invalid file";
}
?>
最佳答案:
mime类型查找通常非常快,在php中,您可以使用finfo扩展来完成它。例子:$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mimetype = finfo_file($finfo, '/path/to/file.jpg'); // image/jpeg
finfo_close($finfo);
此外,您不应该依赖type超全局的$_FILES索引,因为该值可以被欺骗到攻击者可能想要的任何东西。当然,文件扩展名也是这样。