只允许下列mime类型文件_php获取文件mime类型程序代码

时间:2017-11-20  来源:php常用代码  阅读:

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版本限制的。

 代码如下

 $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*/

只允许下列mime类型文件_php获取文件mime类型程序代码

http://m.bbyears.com/jiaocheng/37180.html

推荐访问:
相关阅读 猜你喜欢
本类排行 本类最新