本文实例讲述了php准确获取文件MIME类型的方法。分享给大家供大家参考。具体实现方法如下:
<?php$mime = array (//applications"ai"=> "application/postscript","eps"=> "application/postscript","exe"=> "application/octet-stream","doc"=> "application/vnd.ms-word","xls"=> "application/vnd.ms-excel","ppt"=> "application/vnd.ms-powerpoint","pps"=> "application/vnd.ms-powerpoint","pdf"=> "application/pdf","xml"=> "application/xml","odt"=> "application/vnd.oasis.opendocument.text","swf"=> "application/x-shockwave-flash",// archives"gz"=> "application/x-gzip","tgz"=> "application/x-gzip","bz"=> "application/x-bzip2","bz2"=> "application/x-bzip2","tbz"=> "application/x-bzip2","zip"=> "application/zip","rar"=> "application/x-rar","tar"=> "application/x-tar","7z"=> "application/x-7z-compressed",// texts"txt"=> "text/plain","php"=> "text/x-php","html" => "text/html","htm"=> "text/html","js"=> "text/javascript","css"=> "text/css","rtf"=> "text/rtf","rtfd" => "text/rtfd","py"=> "text/x-python","java" => "text/x-java-source","rb"=> "text/x-ruby","sh"=> "text/x-shellscript","pl"=> "text/x-perl","sql"=> "text/x-sql",// images"bmp"=> "image/x-ms-bmp","jpg"=> "image/jpeg","jpeg" => "image/jpeg","gif"=> "image/gif","png"=> "image/png","tif"=> "image/tiff","tiff" => "image/tiff","tga"=> "image/x-targa","psd"=> "image/vnd.adobe.photoshop",//audio"mp3"=> "audio/mpeg","mid"=> "audio/midi","ogg"=> "audio/ogg","mp4a" => "audio/mp4","wav"=> "audio/wav","wma"=> "audio/x-ms-wma",// video"avi"=> "video/x-msvideo","dv"=> "video/x-dv","mp4"=> "video/mp4","mpeg" => "video/mpeg","mpg"=> "video/mpeg","mov"=> "video/quicktime","wm"=> "video/x-ms-wmv","flv"=> "video/x-flv","mkv"=> "video/x-matroska");function _getMimeDetect() {if (class_exists("finfo")) {return "finfo";} else if (function_exists("mime_content_type")) {return "mime_content_type";} else if ( function_exists("exec")) {$result = exec("file -ib ".escapeshellarg(__FILE__));if ( 0 === strpos($result, "text/x-php") OR 0 === strpos($result, "text/x-c++")) {return "linux";}$result = exec("file -Ib ".escapeshellarg(__FILE__));if ( 0 === strpos($result, "text/x-php") OR 0 === strpos($result, "text/x-c++")) {return "bsd";}}return "internal";}function _getMimeType($path) {global $mime;$fmime = _getMimeDetect();switch($fmime) {case "finfo":$finfo = finfo_open(FILEINFO_MIME);if ($finfo) $type = @finfo_file($finfo, $path);break;case "mime_content_type":$type = mime_content_type($path);break;case "linux":$type = exec("file -ib ".escapeshellarg($path));break;case "bsd":$type = exec("file -Ib ".escapeshellarg($path));break;default:$pinfo = pathinfo($path);$ext = isset($pinfo["extension"]) ? strtolower($pinfo["extension"]) : "";$type = isset($mime[$ext]) ? $mime[$ext] : "unkown";break;}$type = explode(";", $type);//需要加上这段,因为如果使用mime_content_type函数来获取一个不存在的$path时会返回"application/octet-stream"if ($fmime != "internal" AND $type[0] == "application/octet-stream") {$pinfo = pathinfo($path); $ext = isset($pinfo["extension"]) ? strtolower($pinfo["extension"]) : "";if (!empty($ext) AND !empty($mime[$ext])) {$type[0] = $mime[$ext];}}return $type[0];}$path = "1.txt"; //实际上当前路径并不存在1.txtvar_dump(_getMimeType($path));/*End of php*/希望本文所述对大家的php程序设计有所帮助。