PHP检查图像mime类型

时间:2014-02-21 17:03:31

标签: php

这应该很简单,但我不知道为什么这不起作用。

我发送一个URL到我的服务器,我想检查这是否是一个图像。然后我想检查它是JPEG还是PNG。

if(! $image = @getimagesize( $url ) ) {

    return $this->buildResponse( false, 'No image exists at that location' );
}

所以如果它不是图像,我会返回一些JSON响应。这很有效。

然后我想查看它的扩展名。

if( $image['mime']!= 'image/jpeg' || $image['mime']!= 'image/png') {

    return $this->buildResponse( false, 'File must be of type jpeg or png' );
}

所以基本上我正在检查哑剧是否等于其中任何一个,如果不是那么我不想要它。

好的,这应该有用,但我总是得到File must be of type jpeg or png回复。

A var_dump($image)

array(7) {
 [0] 1366
 [1] 854
 [2] 2
 [3] "width="
 ["bits"] 8
 ["channels"] 3
 ["mime"] "image/jpeg"
}

var_dump($image['mime'])

string(10) "image/jpeg"

我是愚蠢的,发疯的还是遗失了一些在这里显而易见的事情。

2 个答案:

答案 0 :(得分:2)

if( $image['mime'] != 'image/jpeg' || $image['mime'] != 'image/png')

这总是如此

答案 1 :(得分:1)

我理解当你在一段时间内挣扎时,这会有点混乱,所以我将解释它背后的逻辑。你说的是你希望一个人满意的两个条件。然而if-block在其中任何一个不满足时触发错误。因为这两个条件是相互排斥的,所以情况总是如此。相反,您希望if检查它们两者是否不满足,从而用AND运算符替换当前的OR运算符。