0

我正在尝试上传图像文件。

我收到文件名并且确定并且没有错误,但是由于某种原因,当它到达我的文件类型时,如果/其他语句:

if($filetype != 'image/jpeg' || $filetype != 'image/jpg' || $filetype != 'image/png' || $filetype != 'image/gif') {
//ERROR - NOT CORRECT TYPE
}
else {
//CORRECT FILE TYPE..CONTINUE
}

它总是会说文件类型错误。我尝试了几种不同大小的不同文件类型,但无济于事。

我的完整代码是:

  if(!$_FILES['photo'.$i]['error'])
  {
   echo "<br />NO ERRORS FOUND";

      //FILE TYPE CHECKER
      $filetype = $_FILES['photo'.$i]['type'];
      echo "<br />FILE TYPE: " . $filetype;

      if($filetype != 'image/jpeg' || $filetype != 'image/jpg' || $filetype != 'image/png' || $filetype != 'image/gif') {
        $valid_file = false;
        $message = 'Wrong file type. Please only upload jpg, jpeg, gif or png files';
      }//END FILE CHECKER IF

      else {
        echo "<br />FILE TYPE OK";
      }//END FILE TYPE CHECK ELSE

  }

该行echo "<br />FILE TYPE: " . $filetype;显示我正在上传正确的文件类型(例如:FILE TYPE: image/png),只是 if 语句没有反应......

有人知道为什么会这样吗?

4

2 回答 2

1

使用 && 不 ||

if($filetype != 'image/jpeg' && $filetype != 'image/jpg' && $filetype != 'image/png' && $filetype != 'image/gif') {
//ERROR - NOT CORRECT TYPE
}

最好使用PHP File Info还将您的逻辑更改为:

$allowed_mimes = array('image/jpeg', 'image/jpg');
if(!in_array($filetype, $allowed_mimes)){
 //eeror
}
于 2013-02-14T05:49:18.670 回答
0

改变 || 到 && - 如果是 || 这将永远是真的。

if($filetype != 'image/jpeg' && $filetype != 'image/jpg' && $filetype != 'image/png' && $filetype != 'image/gif') {
于 2013-02-14T05:51:12.107 回答