php获取上传文件类型 获取文件后缀
本教程提供了三款获取上传文件与图片类型的方法,方法也是很简单的前二种,是先把类型定义好,再用in_array判断,最后一步是利用了fopen再读取前二个字节,判断.
代码如下:
<?php
//获得图片的格式,包括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="javascript: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;
}
?>
教程网址:http://www.phprm.com/scxz/fs3196.html
欢迎收藏∩_∩但请保留本文链接。