function checkFileType($fileName){
$file = fopen($fileName, "rb"); $bin = fread($file, 2); //只读2字节 fclose($file); $strInfo = @unpack("C2chars", $bin);// C为无符号整数,网上搜到的都是c,为有符号整数,这样会产生负数判断不正常 $typeCode = intval($strInfo['chars1'].$strInfo['chars2']); $fileType = ''; if($typeCode == 255216 /*jpg*/ || $typeCode == 7173 /*gif*/ || $typeCode == 13780 /*png*/) { return true; }else{ return false; } }
File Header文件头,通过检查文件头来判断文件类型
由这些文件头即使文件后缀被乱改也可以通过查看二进制文件查出文件的匹配格式,当然这就是一些播放器识别文件的方法
1、从Ultra-edit-32中提取出来的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 二、从winhex中取出的文件头列表File Type ExtensionsHeaderJPEG jpg;jpeg 0xFFD8FFPNG png 0x89504E470D0A1A0AGIF gif GIF8TIFF tif;tiff 0x49492A00TIFF tif;tiff 0x4D4D002ABit map bmp BMAOL ART art 0x4A47040E000000AOL ART art 0x4A47030E000000PC Paintbrush pcx 0x0A050108Graphics Metafile wmf 0xD7CDC69AGraphics Metafile wmf 0x01000900Graphics Metafile wmf 0x02000900Enhanced Metafile emf 0x0100000058000000Corel Draw cdr CDRCAD dwg 0x41433130Adobe Photoshop psd 8BPSRich Text Format rtf rtfXML xml HTML html;htm;php;php3;php4;phtml;shtml typeEmail eml Delivery-date:Outlook Express dbx 0xCFAD12FEOutlookpst!BDNMS Office/OLE2 doc;xls;dot;ppt;xla;ppa;pps;pot;msi;sdw;db 0xD0CF11E0A1B11AE1MS Access mdb;mda;mde;mdt Standard JWordPerfect wpd 0xFF575043OpenOffice Writer sxw writerOpenOffice Calc sxc calcOpenOffice Math sxm mathOpenOffice Impress sxi impressOpenOffice Draw sxd drawAdobe FrameMaker fm <MAKERFILEPostScript eps.or.ps;ps;eps %!PS-AdobeAdobe Acrobat pdf %PDF-1.Quicken qdf 0xAC9EBD8FQuickBooks Backup qbb 0x458600000600Sage sly.or.srt.or.slt;sly;srt;slt 0x53520100Sage Backup 1 SAGEBACKUPLotus WordPro v9 lwp 0x576F726450726FLotus 123 v9 123 0x00001A00051004Lotus 123 v5 wk4 0x00001A0002100400Lotus 123 v3 wk3 0x00001A0000100400Lotus 123 v1 wk1 0x2000604060Windows Password pwl 0xE3828596ZIP Archive zip;jar 0x504B0304ZIP Archive (outdated) zip 0x504B3030RAR Archive rar Rar!GZ Archive gz;tgz 0x1F8B08BZIP Archive bz2 BZhARJ Archive arj 0x60EA7-ZIP Archive 7z 7z集'Wave wav WAVEAVI avi AVI Real Audio ram;ra .ra?0Real Media rm .RMFMPEG mpg;mpeg 0x000001BAMPEG mpg;mpeg 0x000001B3Quicktime mov moovWindows Media asf 0x3026B2758E66CF11MIDI mid MThdWin32 Executable exe;dll;drv;vxd;sys;ocx;vbx MZWin16 Executable exe;dll;drv;vxd;sys;ocx;vbx MZELF Executable elf;; 0x7F454C4601010100