2013-02-07 70 views
9

我想获得上传的图片扩展。获取图片扩展

据我所知,最好的方法是getimagesize()函数。

但是此功能的哑剧,返回image/jpeg当图像有.jpg.JPEG扩展名。

如何得到正确的扩展名?

+0

为什么你关心的延伸?我可以用'.png'扩展名上传一个jpeg,但你仍然可以看到它是一个带有其他方法的jpeg。 – Eric

回答

17

您可以使用image_type_to_extension功能与getimagesize返回的图像类型:

$info = getimagesize($path); 
$extension = image_type_to_extension($info[2]); 
20
$ext = pathinfo($filename, PATHINFO_EXTENSION); 
4
$image = explode(".","test.file.hhh.kkk.jpg"); 
echo end($image); 
+0

真的吗? test.file.jpg – dfsq

+0

包含的文件如何。在名字里? – phpalix

+0

@dfsq,你给我test.file.jpg但现在检查4点的男人。 –

2

另一种方式做到这一点:

$ext = strrchr($filename, "."); // .jpg 
0

您也可以爆炸的文件名带点并按如下所示排列:

$ext = end(explode('.', 'image.name.gif')); 

据:Two different ways to find file extension in PHP

而对于你的新途径笑:

$ext = explode('.', 'file.name.lol.lolz.jpg'); 
echo $ext[count($ext) - 1]; 
6

您还可以使用strrpos和SUBSTR函数来得到任何文件

$filePath="images/ajax-loader.gif"; 

$type=substr($filePath,strrpos($filePath,'.')+1); 

echo "file type=".$type; 
的延伸

输出:gif

,如果你想扩展名为.gif

$type=substr($filePath,strrpos($filePath,'.')+0); 

输出名:.gif

0

对于那些谁想要检查,如果图像类型为JPEG,PNG或等,您可以使用exif_imagetype功能。该函数读取图像的第一个字节并检查其签名。下面是从php.net一个简单的例子:

<?php 
if (exif_imagetype('image.gif') != IMAGETYPE_GIF) { 
    echo 'The picture is not a gif'; 
} 
?> 
0
$size = getimagesize($filename); 
$ext = explode('/', $size['mime'])[1]; 
0
$file_ext = pathinfo($_FILES["file"]["name"], PATHINFO_EXTENSION); 

或使其干净

$filename= $_FILES["file"]["name"]; 
$file_ext = pathinfo($filename,PATHINFO_EXTENSION);