本教程提供了三款获取上传文件与图片类型的方法,方法也是很简单的前二种,是先把类型定义好,再用in_array判断,最后一步是利用了fopen再读取前二个字节,判断。
代码如下 | 复制代码 |
//获得图片的格式,包括jpg,png,gif function get_type($img_name)//获取图像文件类型 { if (preg_match("/.(jpg|jpeg|gif|png|bmp)$/i", $img_name, $matches)){ $type = strtolower($matches[1]); }else{ $type = "string"; } return $type; } //判断上传文件类型 $allowedextensions = array("txt","csv","htm","html","xml", "css教程","doc","xls","rtf","ppt","pdf","swf","flv","avi", "wmv","mov","jpg","jpeg","gif","png"); foreach ($_files as $file) { if ($file['tmp_name'] > '') { if (!in_array(end(explode(".", strtolower($file['name']))), $allowedextensions)) { die($file['name'].' is an invalid file type! ''. '<< go back'); } } } //另类的读取文件与图片类型 function checktitle($filename) { $file = fopen($filename, "rb"); $bin = fread($file, 2); //只读2字节 fclose($file); $strinfo = @unpack("c2chars", $bin); $typecode = intval($strinfo['chars1'].$strinfo['chars2']); $filetype = ""; switch ($typecode) { case 7790: $filetype = 'exe'; break; case 7784: $filetype = 'midi'; break; case 8297: $filetype = 'rar'; break; case 255216: $filetype = 'jpg'; break; case 7173: $filetype = 'gif'; break; case 6677: $filetype = 'bmp'; break; case 13780: $filetype = 'png'; break; default: $filetype = 'unknown'.$typecode; } //fix if ($strinfo['chars1']=='-1' && $strinfo['chars2']=='-40' ) { return 'jpg'; } if ($strinfo['chars1']=='-119' && $strinfo['chars2']=='80' ) { return 'png'; } return $filetype; } ?> |