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

      

     
     
     
     
  • 相关阅读:
    Vue.js监听事件
    Vue.js组件传值
    Vue.js安装
    C#中输入法全角转换半角
    文件夹操作
    转JSON字符串,并进行AES加密
    ReportView报表的使用
    c++读入优化
    快读板子
    【转】2020年 大二上 ACM
  • 原文地址:https://www.cnblogs.com/afeige/p/12023869.html
Copyright © 2020-2023  润新知