如何在PHP中检查文件路径是否为图像?

3

我有一张表存储了图片、文档、PDF等文件的路径。我的问题是:

Select File_Paths from Uploads

现在我该如何使用PHP检查文件路径是否为图像...如果是图像,我就需要查看它,否则就要下载它......


4
查看相关问题和答案可以学习如何确定文件的 MimeType:https://dev59.com/questions/J3I-5IYBdhLWcg3wHUnP - Gordon
4个回答

3

好老的getimagesize()是一种合理的方法,用于确定文件是否包含有效图像。您只需要将其返回值与FALSE进行测试:

<?php

$is_picture = getimagesize($filename)!==FALSE;

?>

当然,最好只执行一次并将结果存储到数据库中。

如果这不是你要找的,请澄清一下。


1
值得注意的是,如果文件不可读,getimagesize() 函数会抛出异常,因此更好的做法是:$is_picture = is_file($filename) && is_readable($filename) && getimagesize($filename) - mrbellek

2

除了那个链接中的示例之外,还有其他的吗? - Ignacio Vazquez-Abrams
文件信息函数是您通常用于确定图像类型的选择吗?我看到 MIME 类型已被弃用。 - rrrfusco
@rrrfusco:mime_content_type()已被弃用,其他函数未受影响。 - Ignacio Vazquez-Abrams

1

你需要像这样检查他们的扩展名:

if (strpos($File_Paths, 'jpg') !== false || strpos($File_Paths, 'gif') !== false)
{
  // yes there is an image.
}

0

您可以从查询中检查路径的扩展名。例如(使用MySQL):

$result = mysql_query('Select File_Paths from Uploads');
$extArray = array('gif', 'jpg', 'jpeg', 'png');
while ($row=mysql_fetch_row($result)) {
  $extension = substr($row[0], strrpos($row[0], ".")+1);
  if (in_array($extension, $extArray)) {
    // Do something with image
  }
  else {
    // Download other files
  }
}

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