개발 꿀팁/PHP

php 파일 업로드 이미지 형식이 이미지인지 여부 판단

Jammie 2022. 8. 2. 12:51
반응형

파일 이미지 유형을 판단합니다

  $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;
    }

 

반응형