本文实例讲述了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.txt var_dump(_getMimeType($path)); /*End of php*/
希望本文所述对大家的php程序设计有所帮助。
本文地址:https://www.stayed.cn/item/24804
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我