PHP 獲取上傳文件的實際類型


方案一:

mime_content_type ( string $filename ) : string

(PHP 4 >= 4.3.0, PHP 5, PHP 7)
mime_content_type — 檢測文件的 MIME 類型
 
方案二:
/**
     * 文件擴展名說明(部分)
     * 3780         pdf
     * 7173         gif
     * 255216       jpg
     * 13780        png
     * 6677         bmp
     * 8075         docx
     * 208207       doc
     */
    public function checkFileType($file = '', $ext = '')
    {//$file=$_FILE['file']['tmp_name'];
        $limitType = ['3780', '7173', '255216', '13780', '6677', '208207'];
        $fp = fopen($file, "rb");
        $bin = fread($fp, 2); //只讀2字節
        fclose($fp);
        // unpack() 函數從二進制字符串對數據進行解包
        $str_info = @unpack("C2chars", $bin);
        //  intval() 函數用於獲取變量的整數值
        $type_code = intval($str_info['chars1'] . $str_info['chars2']);
        if (!in_array($type_code, $limitType)) {
            Response::apiError('上傳的文件類型不符合要求');
        }
        $file_type = '';
        switch ($type_code) {
            case 3780:
                $file_type = 'pdf';
                break;
            case 7173:
                $file_type = 'gif';
                break;
            case 255216:
                $file_type = 'jpg';
                break;
            case 13780:
                $file_type = 'png';
                break;
            case 6677:
                $file_type = 'bmp';
                break;
            case 8075:
                $file_type = 'docx';
                break;
            case 208207:
                $file_type = 'doc';
                break;
            default :
                $file_type = 'unKnown';
        }
        if ($file_type != $ext) {
            Response::apiError('請不要試圖修改上傳文件后綴名,否則文件無法正常顯示,源文件后綴應為:.' . $file_type);
        }
    }

  

 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM