首页 > 编程 > PHP > 正文

php准确获取文件MIME类型的方法

2020-03-22 16:27:10
字体:
来源:转载
供稿:网友
本文实例讲述了php准确获取文件MIME类型的方法。分享给大家供大家参考。具体实现方法如下:$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程序设计有所帮助。PHP教程

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表