php准确获取文件MIME类型的方法 |
本文标签:php,文件,MIME类型 本文实例讲述了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程序设计有所帮助 。 |