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

  

 
 
 
 
posted @ 2019-12-11 17:27  杨宇飞  阅读(3263)  评论(0编辑  收藏  举报