php获取文件mime类型程序代码
在php中获取文件的mime类型方法有很多种,我们来介绍直接利用mime_content_type()函数判断获取mime类型即可了.
mime_content_type返回指定文件的MIME类型,用法,代码如下:
echo mime_content_type ( 'php.gif' ) . "n" ; echo mime_content_type ( 'test.php' );输出:image/gif,text/plain,但是此函数在php5.3.0以后就不可用了,如果你是php5.3.0以后版本我们可使用如下代码来操作:
$finfo = finfo_open(FILEINFO_MIME); $mimetype = finfo_file( $finfo , $filename ); finfo_close( $finfo );下面介绍用户自定的我这个是没有php版本限制,代码如下:
<?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 empty ( $ext ) AND ! empty empty ( $mime [ $ext ])) { $type [0] = $mime [ $ext ]; } } return $type [0]; } $path = '1.txt' ; //实际上当前路径并不存在1.txt var_dump(_getMimeType( $path )); /*End of php*/查看更多关于php获取文件mime类型程序代码 - php文件操作的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did27890