加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php准确获取文件MIME类型的方法

发布时间:2020-12-13 02:40:39 所属栏目:PHP教程 来源:网络整理
导读:《:php准确获取文件MIME类型的方法》要点: 本文介绍了:php准确获取文件MIME类型的方法,希望对您有用。如果有疑问,可以联系我们。 PHP应用 本篇章节讲解php准确获取文件MIME类型的办法.供大家参考研究.具体实现办法如下: ??php$mime = array (

《:php准确获取文件MIME类型的方法》要点:
本文介绍了:php准确获取文件MIME类型的方法,希望对您有用。如果有疑问,可以联系我们。

PHP应用本篇章节讲解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-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程序设计有所赞助.

《:php准确获取文件MIME类型的方法》是否对您有启发,欢迎查看更多与《:php准确获取文件MIME类型的方法》相关教程,学精学透。编程之家 52php.cn为您提供精彩教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读