1

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

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

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

5 回答 5

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";
于 2013-04-24T11:28:32.843 回答
0

要确定它是否真的是 gif,您应该请求 mimetype:

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

于 2013-04-24T11:29:09.487 回答
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;
}
于 2013-04-24T11:29:17.913 回答
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 是为了简化将文件名拆分为扩展名和名称的过程。这不是确定文件类型,如果您知道硬编码的名称,为什么还要将名称分成几部分?

于 2013-04-24T11:35:08.777 回答
-1
$ext = pathinfo($_FILES['image']['name'], PATHINFO_EXTENSION);

摆脱由于某种原因让我投反对票的“自制代码”。

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

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

以供参考:

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

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

于 2013-04-24T11:26:52.593 回答