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

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

PHP中文网
PHP中文网original
2016-05-24 12:52:491580parcourir

[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

                   

                   

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:PHP生成随机中文字符串Article suivant:多个数组求笛卡尔积