如何使用PHP获取图像的扩展?

时间:2013-04-24 11:24:37

标签: php extension-methods dir

有没有办法在不编写扩展名的情况下获取图像的扩展名?

例如在下面的代码中,我必须写image.GIF才能知道它是GIF文件。

pathinfo('/testdir/dir2/image.gif', PATHINFO_EXTENSION);

5 个答案:

答案 0 :(得分:1)

我总是用这个函数找出一个文件mime类型:

function validateMimeType($filePath, $extensions) {
    $finfo      = finfo_open(FILEINFO_MIME);
    $mimeType   = finfo_file($finfo, $filePath);

    finfo_close($finfo);

    return preg_match("/$extensions/i", $mimeType);
}

其中$ extensions是一个字符串,您可以在其中定义所需的格式,例如:

$extension = "jpg|jpeg|png";

答案 1 :(得分:0)

要确定它是否实际上是gif,您应该请求mimetype:

例如:
http://www.sanisoft.com/blog/2010/05/17/how-to-use-php-fileinfo-extension-to-get-file-mime-type/

答案 2 :(得分:0)

在包含值的情况的开关中使用exif_imagetype($ file_name)将获得ext,而不会在名称中使用它。

http://php.net/manual/en/function.exif-imagetype.php

实施例

$type = false;
switch(exif_imagetype($file_name)) {
   case 1:
      $type = 'gif';
   break;
   case 2:
      $type = 'jpeg';
   break;
   case 3:
      $type = 'png';
   break;
}

答案 3 :(得分:0)

基本上没有。

如果有2张图片,image.gif和image.jpg,您会得到什么结果?您希望获得有关文件的信息,因此您必须使用其名称来调用该文件。扩展是名称的一部分。

您可以阅读目录的所有内容并过滤掉您想要的文件。

$dir = "/testdir/dir2";
foreach(scandir($dir) as $file)
{
  if(is_dir($file) == false && $file != ".." && $file != ".")
  {
    var_dump(pathinfo(dir . '/' . $file, PATHINFO_EXTENSION));
  }
} 

Pathinfo用于简化将文件名拆分为扩展名和名称的过程。它不是确定文件类型,如果您知道硬编码的名称,为什么要将名称拆分为多个部分?

答案 4 :(得分:-1)

$ext = pathinfo($_FILES['image']['name'], PATHINFO_EXTENSION);

摆脱我的'自制啤酒代码',因为某种原因让我失败了。

以上代码可能会有所帮助吗?

每个人都是对的,PHP拥有自己的设备,而pathinfo应该可以正常工作。

供参考:

function get_file_extension($file_name) {
    return substr(strrchr($file_name,'.'),1);
}

可以作为某种形式的替代品。在不知道要读取的文件的确切性质的情况下,很难给出确切的答案。