本文实例讲述了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程序设计有所帮助。