0

画像ファイルをアップロードしようとしています。

私はファイル名とOKを受け取り、エラーはありませんが、何らかの理由でファイルタイプif/elseステートメントに到達すると次のようになります。

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ファイル情報を使用する方が、ロジックを次のように変更することもできます。

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

変更|| to&&-もしそうなら|| それは常に真実です。

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