有没有办法在不写扩展名的情况下获得图像的扩展名?
例如在下面的代码中,我必须编写 image.GIF 才能知道它是 GIF 文件。
pathinfo('/testdir/dir2/image.gif', PATHINFO_EXTENSION);
有没有办法在不写扩展名的情况下获得图像的扩展名?
例如在下面的代码中,我必须编写 image.GIF 才能知道它是 GIF 文件。
pathinfo('/testdir/dir2/image.gif', PATHINFO_EXTENSION);
我总是使用这个函数来找出文件的 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";
要确定它是否真的是 gif,您应该请求 mimetype:
例如: http:
//www.sanisoft.com/blog/2010/05/17/how-to-use-php-fileinfo-extension-to-get-file-mime-type/
在带有值大小写的开关中使用 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;
}
基本上,没有。
如果有 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 是为了简化将文件名拆分为扩展名和名称的过程。这不是确定文件类型,如果您知道硬编码的名称,为什么还要将名称分成几部分?
$ext = pathinfo($_FILES['image']['name'], PATHINFO_EXTENSION);
摆脱由于某种原因让我投反对票的“自制代码”。
上面的代码可能会有所帮助吗?
每个人都是对的,PHP 有它自己的设备,pathinfo 应该可以正常工作。
以供参考:
function get_file_extension($file_name) {
return substr(strrchr($file_name,'.'),1);
}
可以作为某种形式的替代品。在不知道要读取的文件的确切性质的情况下,很难给出准确的答案。