本教程提供了三款获取上传文件与图片类型的方法,方法也是很简单的前二种,是先把类型定义好,再用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!<br/>'.
 - '<a href="网页特效:history.go(-1);">'.
 - '<< go back</a>');
 - }
 - }
 - }
 - //另类的读取文件与图片类型
 - 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;
 - }
 - ?>
 
新闻热点
疑难解答