Heim  >  Artikel  >  php教程  >  通过文件前几个字节判断文件类型

通过文件前几个字节判断文件类型

PHP中文网
PHP中文网Original
2016-05-24 12:52:491556Durchsuche

[PHP]代码   

function file_type($filename){
    $file = fopen($filename, "rb");
    $bin = fread($file, 4);
    fclose($file);
    $strInfo = @unpack("H*chars", $bin);
    $typeCode = $strInfo['chars'];
    $typeCode = strtoupper($typeCode);
    
    $hex_3 =  substr($typeCode,0,6);
    $hex_4 =  substr($typeCode,0,8);

    $fileType = '';
    switch ($hex_3)
    {
        case 'FFD8FF':
            $fileType = 'jpg';
            break;
    }

    if(!empty($fileType)){
        return $fileType;
    }

    switch ($hex_4)
    {
        case '89504E47':
            $fileType = 'png';
            break;
        case '47494638':
            $fileType = 'gif';
            break;
        case '00000018':
            $fileType = 'arm';
            break;
        case '2321414D':
            $fileType = 'amr';
            break;
        default:
            $fileType = 'unknown: '.$typeCode;
    }
    return $fileType;
}

[PHP]代码

JPEG (jpg),文件头:FFD8FF  
PNG (png),文件头:89504E47  
GIF (gif),文件头:47494638  
TIFF (tif),文件头:49492A00  
Windows Bitmap (bmp),文件头:424D  
CAD (dwg),文件头:41433130  
Adobe Photoshop (psd),文件头:38425053  
Rich Text Format (rtf),文件头:7B5C727466  
XML (xml),文件头:3C3F786D6C  
HTML (html),文件头:68746D6C3E  
Email [thorough only] (eml),文件头:44656C69766572792D646174653A  
Outlook Express (dbx),文件头:CFAD12FEC5FD746F  
Outlook (pst),文件头:2142444E  
MS Word/Excel (xls.or.doc),文件头:D0CF11E0  
MS Access (mdb),文件头:5374616E64617264204A  
WordPerfect (wpd),文件头:FF575043  
Postscript (eps.or.ps),文件头:252150532D41646F6265  
Adobe Acrobat (pdf),文件头:255044462D312E  
Quicken (qdf),文件头:AC9EBD8F  
Windows Password (pwl),文件头:E3828596  
ZIP Archive (zip),文件头:504B0304  
RAR Archive (rar),文件头:52617221  
Wave (wav),文件头:57415645  
AVI (avi),文件头:41564920  
Real Audio (ram),文件头:2E7261FD  
Real Media (rm),文件头:2E524D46  
MPEG (mpg),文件头:000001BA  
MPEG (mpg),文件头:000001B3  
Quicktime (mov),文件头:6D6F6F76  
Windows Media (asf),文件头:3026B2758E66CF11  
MIDI (mid),文件头:4D546864

                   

                   

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:PHP生成随机中文字符串Nächster Artikel:多个数组求笛卡尔积