国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開發(fā) > PHP > 正文

PHP取二進(jìn)制文件頭快速判斷文件類型的實(shí)現(xiàn)代碼

2024-05-04 23:12:21
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
一般我們都是按照文件擴(kuò)展名來(lái)判斷文件類型,但是這個(gè)很不靠譜,輕易就通過(guò)修改擴(kuò)展名來(lái)躲避了,一般必須要讀取文件信息來(lái)識(shí)別,PHP擴(kuò)展中提供了類似 exif_imagetype 這樣的函數(shù)讀取圖片類的文件類型,但是很多時(shí)候擴(kuò)展不一定安裝了,有時(shí)候就需要自己來(lái)實(shí)現(xiàn)識(shí)別文件類型的工作。

下面代碼就展示了自己通過(guò)讀取文件頭信息來(lái)識(shí)別文件的真實(shí)類型。

復(fù)制代碼 代碼如下:


<?php
     $files = array(
        'c:/1.jpg',
        'c:/1.png',
        'c:/1.gif',
        'c:/1.rar',
        'c:/1.zip',
        'c:/1.exe',
    );
    foreach ($files AS $file) {
        $fp = fopen($file, "rb");
        $bin = fread($fp, 2); //只讀2字節(jié)
        fclose($fp);
        $str_info  = @unpack("C2chars", $bin);
        $type_code = intval($str_info['chars1'].$str_info['chars2']);
        $file_type = '';
        switch ($type_code) {
            case 7790:
                $file_type = 'exe';
                break;
            case 7784:
                $file_type = 'midi';
                break;
            case 8075:
                $file_type = 'zip';
                break;
            case 8297:
                $file_type = 'rar';
                break;
            case 255216:
                $file_type = 'jpg';
                break;
            case 7173:
                $file_type = 'gif';
                break;
            case 6677:
                $file_type = 'bmp';
                break;
            case 13780:
                $file_type = 'png';
                break;
            default:
                $file_type = 'unknown';
                break;
        }

        echo $file , ' type: <b>', $file_type, '</b> code:<b>', $type_code, '</b><br />';

    }


本例輸出結(jié)果
c:/1.jpg type: jpg code:255216
c:/1.png type: png code:13780
c:/1.gif type: gif code:7173
c:/1.rar type: rar code:8297
c:/1.zip type: zip code:8075
c:/1.exe type: exe code:7790
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 尚志市| 夏邑县| 铜陵市| 巴林右旗| 平远县| 秀山| 大石桥市| 湛江市| 弋阳县| 岳池县| 乡城县| 宁乡县| 水城县| 宁德市| 长治市| 鄂尔多斯市| 民勤县| 若尔盖县| 台东县| 岚皋县| 平乐县| 怀远县| 西畴县| 宿州市| 册亨县| 万盛区| 延庆县| 德州市| 库车县| 安福县| 菏泽市| 昌宁县| 梓潼县| 沙洋县| 凤山县| 英吉沙县| 阳西县| 万载县| 桂林市| 涿鹿县| 星子县|