2013-02-07 69 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);