Php 如何使用MIME验证文件?

Php 如何使用MIME验证文件?,php,javascript,jquery,ajax,Php,Javascript,Jquery,Ajax,我想使用php验证服务器中的文件类型。现在,我已经通过检查文件的文件扩展名类型对其进行了验证。这是可行的,但问题是,这并不是作为用户验证文件的最佳方法。更改后,可以将文本文件转换为jpeg格式,并且仍然可以上载它 所以我想做的是添加另一个验证方法,我还想使用php检查文件的MIME类型,以识别文件是图像、视频还是音频 所以我的问题是它是如何编码的,这样我就可以在php中使用MIME类型来验证文件了?另外,如果我有一个非常大的文件,MIME验证是需要很长时间才能启动,还是直接进行验证 下面是我目前

我想使用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_open(FILEINFO_MIME_TYPE);
$mimetype = finfo_file($finfo, '/path/to/file.jpg'); // image/jpeg
finfo_close($finfo);
此外,您不应该依赖于
$\u文件的
类型
索引
超全局,因为该值可以被欺骗到攻击者可能想要的任何内容。当然,文件扩展名也是如此。

您可以使用。也可以让你放心


javascript代码在这里似乎无关紧要。您可能也知道,
$\u文件
中指示的类型只能作为用户/浏览器的建议来查看。

finfo是否能够检查图像、音频和视频?另外,如果我使用finfo和文件扩展名类型来验证文件,这是否足够,或者我是否需要更多的验证方法扫描您向我展示一个示例,例如,让我们说finfo如何检查特定的图像类型,以便我可以看到它是如何工作的done@user1391585:当然,一秒钟。@user1391585:完成。此外,如果您希望只接受图像,
exif\u imagetype()
使用起来更简单(
$mimetype=image\u type\u to\u mime\u type(exif\u imagetype('/path/to/file.jpg'));
)。finfo也可以用于检查音频和视频文件还是仅用于图像?我猜getImagesize仅用于图像验证?顺便说一句,要编写getImagesize代码,我是否只需要在代码中包含以下内容即可使其正常工作:
$size=getImagesize($_FILES['fileImage'])然后执行:
如果($size)
?@user1391585仅对图像执行是(我被代码误导)是getimagesize的一个很好的例子<代码>如果(!getimagesize($\u FILES['file']['tmp\u name']){error}
应该执行此操作。