php判断ファイルアップロードピクチャフォーマットの例の詳細

1687 ワード

php判断ファイルアップロードピクチャフォーマットの例の詳細
ファイルの画像タイプを判断し、

 $type  = $_FILES['image']['tmp_name'];//   
 //$type  = $this->getImagetype( $type ); 
 $filetype = ['jpg', 'jpeg', 'gif', 'bmp', 'png'];
 if (! in_array($type, $filetype))
 { 
  return "      ";
 }

上記のように、ユーザがファイル接尾辞をpng jpegと修正しても満足できない場合は、資料を調べる解決方法は、ファイルを判断するバイナリストリーム情報を採用することです.もしあなたがちょうどこのような問題に遭遇したら、試してみてください.

 //*              return      
 public function getImagetype($filename)
 {
  $file = fopen($filename, 'rb');
  $bin = fread($file, 2); //  2  
  fclose($file);
  $strInfo = @unpack('C2chars', $bin);
  $typeCode = intval($strInfo['chars1'].$strInfo['chars2']);
  // dd($typeCode);
  $fileType = '';
  switch ($typeCode) {
   case 255216:
    $fileType = 'jpg';
    break;
   case 7173:
    $fileType = 'gif';
    break;
   case 6677:
    $fileType = 'bmp';
    break;
   case 13780:
    $fileType = 'png';
    break;
   default:
    $fileType = '          ';
  }
  // if ($strInfo['chars1']=='-1' AND $strInfo['chars2']=='-40' ) return 'jpg';
  // if ($strInfo['chars1']=='-119' AND $strInfo['chars2']=='80' ) return 'png';
  return $fileType;
 }

もし疑問があれば伝言を残してあるいは当駅のコミュニティに行って討論を交流して、読書に感謝して、みんなを助けることができることを望んで、みんなの当駅に対する支持に感謝します!