获取文件格式

通过字节识别文件

http://blog.sina.com.cn/s/blog_62b832910100vmbq.html

通过相关文件格式,获取文件实际类型

YII的代码

class FileTools{
	public static 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;
	}
	public static function getMimeType($file,$magicFile=null,$checkExtension=true)
	{
		if(function_exists('finfo_open'))
		{
			$options=defined('FILEINFO_MIME_TYPE') ? FILEINFO_MIME_TYPE : FILEINFO_MIME;
			$info=$magicFile===null ? finfo_open($options) : finfo_open($options,$magicFile);

			if($info && ($result=finfo_file($info,$file))!==false)
				return $result;
		}

		if(function_exists('mime_content_type') && ($result=mime_content_type($file))!==false)
			return $result;
		return $checkExtension ? self::getMimeTypeByExtension($file) : null;
	}
	/**
	 * Determines the MIME type based on the extension name of the specified file.
	 * This method will use a local map between extension name and MIME type.
	 * @param string $file the file name.
	 * @param string $magicFile the path of the file that contains all available MIME type information.
	 * If this is not set, the default 'system.utils.mimeTypes' file will be used.
	 * This parameter has been available since version 1.1.3.
	 * @return string the MIME type. Null is returned if the MIME type cannot be determined.
	 */
	public static function getMimeTypeByExtension($file,$magicFile=null)
	{
		static $extensions;
		if($extensions===null)
			$extensions=$magicFile===null ? require('mimeTypes.php') : $magicFile;
		if(($ext=pathinfo($file, PATHINFO_EXTENSION))!=='')
		{
			$ext=strtolower($ext);
			if(isset($extensions[$ext]))
				return $extensions[$ext];
		}
		return null;
	}
}

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注