我想使用 php 验证服务器中的文件类型。现在我已经通过检查文件的文件扩展名类型验证了它。这可以正常工作,但问题是这不是作为用户验证文件的最佳方式,更改可以将文本文件转换为 jpeg,并且仍然能够上传它。
所以我想做的是添加另一种验证方法,我还想使用 php 检查文件的 MIME 类型,以识别文件是图像、视频还是音频。
所以我的问题是它是如何编码的,以便我可以在 php 中使用 MIME 类型来验证文件?另外,如果我有一个非常大的文件,MIME 验证是需要很长时间才能启动还是立即验证?
下面是目前我只有图像的代码,它使用 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"] . "<br />";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "<br />";
echo "Type: " . $_FILES["file"]["type"] . "<br />";
}
}
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);
此外,您不应该依赖 $_FILES
超全局的 type
索引,因为该值可以被伪造为攻击者可能想要的任何内容。当然,文件扩展名也是如此。
关于php - 如何使用 MIME 验证文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10653159/