php 获取文件MIME类型的实现方法
内容摘要
这篇文章主要为大家详细介绍了php 获取文件MIME类型的实现方法,具有一定的参考价值,可以用来参考一下。
php获取文件MIME类型,对此感兴趣的朋友,看看idc笔记做的技术笔记。经测
php获取文件MIME类型,对此感兴趣的朋友,看看idc笔记做的技术笔记。经测
文章正文
这篇文章主要为大家详细介绍了php 获取文件MIME类型的实现方法,具有一定的参考价值,可以用来参考一下。
php获取文件MIME类型,对此感兴趣的朋友,看看idc笔记做的技术笔记。经测试代码如下:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 | <code class = "php" > <?php /** * 获取文件MIME类型 * * @param * @author php教程 www.idcnote.com **/ $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教程(www.idcnote.com) ***/ </code> |
注:关于php 获取文件MIME类型的实现方法的内容就先介绍到这里,更多相关文章的可以留意
代码注释