2014-02-12 173 views
0

我當然可以通過exif_imagetypegetimagesize檢查MIME類型,並逐個檢查MIME類型......但我只想要任何圖像 - 我不在乎什麼類型。 ..所以我想知道 - 我可以做這樣的事情:?檢查文件是否是任何圖像(一般檢查) - PHP

// PHP manual says: Determine the type of an image 
// and that Imagetype Constants are 1-17 so : 
$tmp_imagetype = exif_imagetype('image.gif'); 
if (($tmp_imagetype>=1) && ($tmp_imagetype<=17)) { 
    echo "It is an image!"; 
} else{ 
    echo "It isn't an image."; 
} 

我可以信賴嗎?

當文件不是圖像時會發生什麼?它將只返回非圖像恆定值還是會拋出一個警告或錯誤

感謝

+0

這看起來像http://stackoverflow.com/questions/15408125/php-check-if-file-is-an-image的副本。 – Ashley

+0

@Ashley但它並不像我在問題開始時說的那樣(但問題的名稱可能會讓人困惑,我修復了它) –

+0

dupe與衆不同嗎? – PeeHaa

回答

1

你真的不需要所有的,你只需要以下爲exif_imagetype返回false如果它不是一個圖像

if($imagetype = exif_imagetype('image.gif')){ 
    // its an image 
} else { 
    // its not an image 
} 
+0

啊你是對的我錯過了它真正說的手冊「當找到正確的簽名時,將返回適當的常數值,否則返回值爲** FALSE **。」。你認爲我應該在exif_imagetype()調用之前添加'@'嗎?我不想在檢查太小或無文件時發出任何警告... –

+0

@ jave.web如果你願意,你可以放一個'@',但我通常爲了調試目的而避免它們。 – cmorrissey

+0

我也是,我只是想知道這是不是一個完全愚蠢的想法:) –

0

你爲什麼不乾脆把所有類型的圖像在一個數組,然後用這個代碼檢查:

if(in_array($value, $array)) { 
    //it's an image! Hooray! 
}else { 
    //it's not. 
} 
+0

提示:在你的if –

+0

當然thx – annascott

+0

annascott使用'in_array',因爲我想做一個普通的檢查而不是一個「in_array」檢查 –

1

你可以檢查FUNC (完全)假:

$file="SOMEFILE"; 
if(exif_imagetype($file)===FALSE){ 
    print("NOT IMAGE"); 
}else{ 
    print("IMAGE"); 
} 
+0

我真的想接受這兩個答案:D –