根据二进制流及文件头获取文件类型mime |
您所在的位置:网站首页 › 文件头文件 › 根据二进制流及文件头获取文件类型mime |
图片格式查看: 用十六进制编辑器察看过图片的文件头,分析的结果,供大家参考: 1.JPEG/JPG- 文件头标识 (2 bytes): $ff, $d8 (SOI) (JPEG 文件标识) - 文件结束标识 (2 bytes): $ff, $d9 (EOI) 2.TGA- 未压缩的前5字节 00 00 02 00 00- RLE压缩的前5字节 00 00 10 00 00 3.PNG- 文件头标识 (8 bytes) 89 50 4E 47 0D 0A 1A 0A 4.GIF- 文件头标识 (6 bytes) 47 49 46 38 39(37) 61 G I F 8 9 (7) a gif89a 有透明
gif87a 无透明 5.BMP- 文件头标识 (2 bytes) 42 4D B M 6.PCX- 文件头标识 (1 bytes) 0A 7.TIFF- 文件头标识 (2 bytes) 4D 4D 或 49 49 8.ICO- 文件头标识 (8 bytes) 00 00 01 00 01 00 20 20 9.CUR- 文件头标识 (8 bytes) 00 00 02 00 01 00 20 20 10.IFF- 文件头标识 (4 bytes) 46 4F 52 4D F O R M 11.ANI- 文件头标识 (4 bytes) 52 49 46 46 R I F F 根据这些文件头标识的收集,我可以写一个识别图像格式的模块了。但是在写这个模块之前可以对收集到的文件头标识进行优化,使得程序中字符串比对次数尽量的少。1.JPEG我们知需要比对文件头的$ff, $d8这两个字符,而不用读取最后的两个结束标识了。2.TGA,ICO,CUR只需比对第三个与第五个字符即可。3.PNG比对[89][50]这两个字符。4.GIF比对[47][49][46]与第五个字符。 废话不多说了,利用内存流来判断文件的格式,其实判断文件的前几个字节就可以简单的判断这个文件是什么类型的文件,例如 jpg文件 是 FFD8 (从低位到高位就要反过来 D8FF 下面都是一样) BMP文件 是 424D ---4D42 附:常见文件的文件头标识
255044 PDF 526563 EML D0CF11 PPT 4D5AEE COM E93B03 COM 4D5A90 EXE 424D3E BMP 49492A TIF 384250 PSD C5D0D3 EPS 0A0501 PCS 89504E PNG 060500 RAW 000002 TGA 60EA27 ARJ 526172 RAR 504B03 ZIP 495363 CAB 1F9D8C Z 524946 WAV 435753 SWF 3026B2 WMV 3026B2 WMA 2E524D RM 00000F MOV 000077 MOV 000001 MPA FFFB50 MP3 234558 m3u 3C2144 HTM FFFE3C XSL 3C3F78 XML 3C3F78 MSC 4C0000 LNK 495453 CHM 805343 scm D0CF11 XLS 31BE00 WRI 00FFFF MDF 4D4544 MDS 5B436C CCD 00FFFF IMG FFFFFF SUB 17A150 PCB 2A5052 ECO 526563 PPC 000100 DDB 42494C LDB 2A7665 SCH 2A2420 LIB 434841 FNT 7B5C72 RTF 7B5072 GTD 234445 PRG 000007 PJT 202020 BAS 000002 TAG 4D5A90 dll 4D5A90 OCX 4D5A50 DPL 3F5F03 HLP 4D5A90 OLB 4D5A90 IMM 4D5A90 IME 3F5F03 LHP C22020 NLS 5B5769 CPX 4D5A16 DRV 5B4144 PBK 24536F PLL 4E4553 NES 87F53E GBC 00FFFF SMD 584245 XBE 005001 XMV 000100 TTF 484802 PDG 000100 TST414331 dwg D0CF11 max 另外还有一些重要的文件,没有固定的文件头,如下: TXT 没固定文件头定义 TMP 没固定文件头定义 INI 没固定文件头定义 BIN 没固定文件头定义 DBF 没固定文件头定义 C 没没固定文件头定义 CPP 没固定文件头定义 H 没固定文件头定义 BAT 没固定文件头定义 还有一些不同的文件有相同的文件头,最典型的就是下面: 4D5A90 EXE 4D5A90 dll 4D5A90 OCX 4D5A90 OLB 4D5A90 IMM 4D5A90 IME 附网上例子 根据二进制流获取图片类型public function getFileType($file,&$fileType,&$mime){ $bin = substr($file,0,2); $strInfo = @unpack("C2chars", $bin); $typeCode = intval($strInfo['chars1'].$strInfo['chars2']); $fileType = ''; switch ($typeCode) { case 7790: $fileType = 'exe'; return false; break; case 7784: $fileType = 'midi'; return false; break; case 8297: $fileType = 'rar'; return false; break; case 255216: $fileType = 'jpg'; $mime = 'image/jpeg'; return true; break; case 7173: $fileType = 'gif'; $mime = 'image/gif'; return true; break; case 6677: $fileType = 'bmp'; $mime = 'image/bmp'; return true; break; case 13780: $fileType = 'png'; $mime = 'image/png'; return true; break; default: return false; break; } return false; } mmime type:
ime.ez=application/andrew-inset mime.csm=application/cu-seeme mime.cu=application/cu-seeme mime.tsp=application/dsptype mime.spl=application/futuresplash mime.hta=application/hta mime.cpt=application/mac-compactpro mime.hqx=application/mac-binhex40 mime.nb=application/mathematica mime.mdb=application/msaccess mime.doc=application/msword mime.dot=application/msword mime.bin=application/octet-stream mime.oda=application/oda mime.ogg=application/ogg mime.prf=application/pics-rules mime.key=application/pgp-keys mime.pdf=application/pdf mime.pgp=application/pgp-signature mime.ps=application/postscript mime.ai=application/postscript mime.eps=application/postscript mime.rss=application/rss+xml mime.rtf=application/rtf mime.smi=application/smil mime.smil=application/smil mime.wp5=application/wordperfect5.1 mime.xht=application/xhtml+xml mime.xhtml=application/xhtml+xml mime.zip=application/zip mime.cdy=application/vnd.cinderella mime.mif=application/vnd.mif mime.xls=application/vnd.ms-excel mime.xlb=application/vnd.ms-excel mime.cat=application/vnd.ms-pki.seccat mime.stl=application/vnd.ms-pki.stl mime.ppt=application/vnd.ms-powerpoint mime.pps=application/vnd.ms-powerpoint mime.pot=application/vnd.ms-powerpoint mime.sdc=application/vnd.stardivision.calc mime.sda=application/vnd.stardivision.draw mime.sdd=application/vnd.stardivision.impress mime.sdp=application/vnd.stardivision.impress mime.smf=application/vnd.stardivision.math mime.sdw=application/vnd.stardivision.writer mime.vor=application/vnd.stardivision.writer mime.sgl=application/vnd.stardivision.writer-global mime.sxc=application/vnd.sun.xml.calc mime.stc=application/vnd.sun.xml.calc.template mime.sxd=application/vnd.sun.xml.draw mime.std=application/vnd.sun.xml.draw.template mime.sxi=application/vnd.sun.xml.impress mime.sti=application/vnd.sun.xml.impress.template mime.sxm=application/vnd.sun.xml.math mime.sxw=application/vnd.sun.xml.writer mime.sxg=application/vnd.sun.xml.writer.global mime.stw=application/vnd.sun.xml.writer.template mime.sis=application/vnd.symbian.install mime.wbxml=application/vnd.wap.wbxml mime.wmlc=application/vnd.wap.wmlc mime.wmlsc=application/vnd.wap.wmlscriptc mime.wk=application/x-123 mime.dmg=application/x-apple-diskimage mime.bcpio=application/x-bcpio mime.torrent=application/x-bittorrent mime.cdf=application/x-cdf mime.vcd=application/x-cdlink mime.pgn=application/x-chess-pgn mime.cpio=application/x-cpio mime.csh=application/x-csh mime.deb=application/x-debian-package mime.dcr=application/x-director mime.dir=application/x-director mime.dxr=application/x-director mime.wad=application/x-doom mime.dms=application/x-dms mime.dvi=application/x-dvi mime.pfa=application/x-font mime.pfb=application/x-font mime.gsf=application/x-font mime.pcf=application/x-font mime.pcf.Z=application/x-font mime.spl=application/x-futuresplash mime.gnumeric=application/x-gnumeric mime.sgf=application/x-go-sgf mime.gcf=application/x-graphing-calculator mime.gtar=application/x-gtar mime.tgz=application/x-gtar mime.taz=application/x-gtar mime.hdf=application/x-hdf mime.phtml=application/x-httpd-php mime.pht=application/x-httpd-php mime.php=application/x-httpd-php mime.phps=application/x-httpd-php-source mime.php3=application/x-httpd-php3 mime.php3p=application/x-httpd-php3-preprocessed mime.php4=application/x-httpd-php4 mime.ica=application/x-ica mime.ins=application/x-internet-signup mime.isp=application/x-internet-signup mime.iii=application/x-iphone mime.jar=application/x-java-archive mime.jnlp=application/x-java-jnlp-file mime.ser=application/x-java-serialized-object mime.class=application/x-java-vm mime.js=application/x-javascript mime.chrt=application/x-kchart mime.kil=application/x-killustrator mime.kpr=application/x-kpresenter mime.kpt=application/x-kpresenter mime.skp=application/x-koan mime.skd=application/x-koan mime.skt=application/x-koan mime.skm=application/x-koan mime.ksp=application/x-kspread mime.kwd=application/x-kword mime.kwt=application/x-kword mime.latex=application/x-latex mime.lha=application/x-lha mime.lzh=application/x-lzh mime.lzx=application/x-lzx mime.frm=application/x-maker mime.maker=application/x-maker mime.frame=application/x-maker mime.fm=application/x-maker mime.fb=application/x-maker mime.book=application/x-maker mime.fbdoc=application/x-maker mime.mif=application/x-mif mime.wmz=application/x-ms-wmz mime.wmd=application/x-ms-wmd mime.com=application/x-msdos-program mime.exe=application/x-msdos-program mime.bat=application/x-msdos-program mime.dll=application/x-msdos-program mime.msi=application/x-msi mime.nc=application/x-netcdf mime.pac=application/x-ns-proxy-autoconfig mime.nwc=application/x-nwc mime.o=application/x-object mime.oza=application/x-oz-application mime.pl=application/x-perl mime.pm=application/x-perl mime.p7r=application/x-pkcs7-certreqresp mime.crl=application/x-pkcs7-crl mime.qtl=application/x-quicktimeplayer mime.rpm=application/x-redhat-package-manager mime.shar=application/x-shar mime.swf=application/x-shockwave-flash mime.swfl=application/x-shockwave-flash mime.sh=application/x-sh mime.sit=application/x-stuffit mime.sv4cpio=application/x-sv4cpio mime.sv4crc=application/x-sv4crc mime.tar=application/x-tar mime.tcl=application/x-tcl mime.tex=application/x-tex mime.gf=application/x-tex-gf mime.pk=application/x-tex-pk mime.texinfo=application/x-texinfo mime.texi=application/x-texinfo mime.~=application/x-trash mime.%=application/x-trash mime.bak=application/x-trash mime.old=application/x-trash mime.sik=application/x-trash mime.t=application/x-troff mime.tr=application/x-troff mime.roff=application/x-troff mime.man=application/x-troff-man mime.me=application/x-troff-me mime.ms=application/x-troff-ms mime.ustar=application/x-ustar mime.src=application/x-wais-source mime.wz=application/x-wingz mime.crt=application/x-x509-ca-cert mime.fig=application/x-xfig mime.au=audio/basic mime.snd=audio/basic mime.mid=audio/midi mime.midi=audio/midi mime.kar=audio/midi mime.mpga=audio/mpeg mime.mpega=audio/mpeg mime.mp2=audio/mpeg mime.mp3=audio/mpeg mime.m3u=audio/mpegurl mime.sid=audio/prs.sid mime.aif=audio/x-aiff mime.aiff=audio/x-aiff mime.aifc=audio/x-aiff mime.gsm=audio/x-gsm mime.m3u=audio/x-mpegurl mime.wma=audio/x-ms-wma mime.wax=audio/x-ms-wax mime.rpm=audio/x-pn-realaudio-plugin mime.ra=audio/x-pn-realaudio mime.rm=audio/x-pn-realaudio mime.ram=audio/x-pn-realaudio mime.ra=audio/x-realaudio mime.pls=audio/x-scpls mime.sd2=audio/x-sd2 mime.wav=audio/x-wav mime.pdb=chemical/x-pdb mime.xyz=chemical/x-xyz mime.bmp=image/bmp mime.gif=image/gif mime.ief=image/ief mime.jpeg=image/jpeg mime.jpg=image/jpeg mime.jpe=image/jpeg mime.pcx=image/pcx mime.png=image/png mime.svg=image/svg+xml mime.svgz=image/svg+xml mime.tiff=image/tiff mime.tif=image/tiff mime.wbmp=image/vnd.wap.wbmp mime.ras=image/x-cmu-raster mime.cdr=image/x-coreldraw mime.pat=image/x-coreldrawpattern mime.cdt=image/x-coreldrawtemplate mime.cpt=image/x-corelphotopaint mime.djvu=image/x-djvu mime.djv=image/x-djvu mime.ico=image/x-icon mime.art=image/x-jg mime.jng=image/x-jng mime.bmp=image/x-ms-bmp mime.psd=image/x-photoshop mime.pnm=image/x-portable-anymap mime.pbm=image/x-portable-bitmap mime.pgm=image/x-portable-graymap mime.ppm=image/x-portable-pixmap mime.rgb=image/x-rgb mime.xbm=image/x-xbitmap mime.xpm=image/x-xpixmap mime.xwd=image/x-xwindowdump mime.igs=model/iges mime.iges=model/iges mime.msh=model/mesh mime.mesh=model/mesh mime.silo=model/mesh mime.wrl=model/vrml mime.vrml=model/vrml mime.csv=text/comma-separated-values mime.css=text/css mime.323=text/h323 mime.htm=text/html mime.html=text/html mime.uls=text/iuls mime.mml=text/mathml mime.asc=text/plain mime.txt=text/plain mime.text=text/plain mime.diff=text/plain mime.rtx=text/richtext mime.rtf=text/rtf mime.sct=text/scriptlet mime.wsc=text/scriptlet mime.tm=text/texmacs mime.ts=text/texmacs mime.tsv=text/tab-separated-values mime.jad=text/vnd.sun.j2me.app-descriptor mime.wml=text/vnd.wap.wml mime.wmls=text/vnd.wap.wmlscript mime.xml=text/xml mime.xsl=text/xml mime.h++=text/x-c++hdr mime.hpp=text/x-c++hdr mime.hxx=text/x-c++hdr mime.hh=text/x-c++hdr mime.c++=text/x-c++src mime.cpp=text/x-c++src mime.cxx=text/x-c++src mime.cc=text/x-c++src mime.h=text/x-chdr mime.csh=text/x-csh mime.c=text/x-csrc mime.java=text/x-java mime.moc=text/x-moc mime.p=text/x-pascal mime.pas=text/x-pascal mime.***=text/x-pcs-*** mime.shtml=text/x-server-parsed-html mime.etx=text/x-setext mime.sh=text/x-sh mime.tcl=text/x-tcl mime.tk=text/x-tcl mime.tex=text/x-tex mime.ltx=text/x-tex mime.sty=text/x-tex mime.cls=text/x-tex mime.vcs=text/x-vcalendar mime.vcf=text/x-vcard mime.dl=video/dl mime.fli=video/fli mime.gl=video/gl mime.mpeg=video/mpeg mime.mpg=video/mpeg mime.mpe=video/mpeg mime.qt=video/quicktime mime.mov=video/quicktime mime.mxu=video/vnd.mpegurl mime.dif=video/x-dv mime.dv=video/x-dv mime.lsf=video/x-la-asf mime.lsx=video/x-la-asf mime.mng=video/x-mng mime.asf=video/x-ms-asf mime.asx=video/x-ms-asf mime.wm=video/x-ms-wm mime.wmv=video/x-ms-wmv mime.wmx=video/x-ms-wmx mime.wvx=video/x-ms-wvx mime.avi=video/x-msvideo mime.movie=video/x-sgi-movie mime.ice=x-conference/x-cooltalk mime.vrm=x-world/x-vrml mime.vrml=x-world/x-vrml mime.wrl=x-world/x-vrml 参考:http://www.cnblogs.com/jetlee/archive/2010/11/05/1870223.htmlhttp://blog.sina.com.cn/s/blog_6bfe46bc0100q1bx.htmlhttp://samver.blogbus.com/logs/60772235.htmlhttp://www.garykessler.net/library/file_sigs.html |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |