最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

php準(zhǔn)確獲取文件MIME類型的方法

 更新時(shí)間:2015年06月17日 15:44:44   作者:邪惡的小Y  
這篇文章主要介紹了php準(zhǔn)確獲取文件MIME類型的方法,涉及php針對(duì)文件屬性操作的相關(guān)技巧,需要的朋友可以參考下

本文實(shí)例講述了php準(zhǔn)確獲取文件MIME類型的方法。分享給大家供大家參考。具體實(shí)現(xiàn)方法如下:

<?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);
  //需要加上這段,因?yàn)槿绻褂胢ime_content_type函數(shù)來(lái)獲取一個(gè)不存在的$path時(shí)會(huì)返回'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'; //實(shí)際上當(dāng)前路徑并不存在1.txt
var_dump(_getMimeType($path));
/*End of php*/

希望本文所述對(duì)大家的php程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • PHP正則驗(yàn)證字符串是否為數(shù)字的兩種方法并附常用正則

    PHP正則驗(yàn)證字符串是否為數(shù)字的兩種方法并附常用正則

    今天小編就為大家分享一篇關(guān)于PHP正則驗(yàn)證字符串是否為數(shù)字的兩種方法并附常用正則,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-02-02
  • WordPress主題制作之模板文件的引入方法

    WordPress主題制作之模板文件的引入方法

    這篇文章主要介紹了WordPress主題制作之模板文件的引入方法,針對(duì)get_template_part()函數(shù)的使用進(jìn)行了講解,需要的朋友可以參考下
    2015-12-12
  • 如何使用PHP7的Yaconf

    如何使用PHP7的Yaconf

    Yaconf是一個(gè)高性能的PHP配置容器, 它在PHP啟動(dòng)的時(shí)候把格式為INI的配置文件Parse后存儲(chǔ)在PHP的常駐內(nèi)存中,不需要每次請(qǐng)求的時(shí)候都來(lái)分析配置文件,并且在獲取配置項(xiàng)的時(shí)候"zero-copy"。
    2021-05-05
  • PHP傳輸base64數(shù)據(jù)不完整的解決方法

    PHP傳輸base64數(shù)據(jù)不完整的解決方法

    最近在做OCR增值稅務(wù)處理時(shí),接口是通過(guò)圖片轉(zhuǎn)base64提交處理然后返回?cái)?shù)據(jù)的,通過(guò)在線工具進(jìn)行測(cè)試,發(fā)現(xiàn)傳遞過(guò)去的數(shù)據(jù)可以使用,接收到的數(shù)據(jù)卻提示損壞,所以本文給大家介紹了PHP傳輸base64數(shù)據(jù)不完整的解決方法,需要的朋友可以參考下
    2024-05-05
  • PHP設(shè)計(jì)模式之單例模式定義與用法分析

    PHP設(shè)計(jì)模式之單例模式定義與用法分析

    這篇文章主要介紹了PHP設(shè)計(jì)模式之單例模式定義與用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了單例模式的概念、特點(diǎn)、優(yōu)缺點(diǎn),并結(jié)合php實(shí)例形式分析了單例模式的定義與使用方法,需要的朋友可以參考下
    2019-03-03
  • 淺談php安全性需要注意的幾點(diǎn)事項(xiàng)

    淺談php安全性需要注意的幾點(diǎn)事項(xiàng)

    這段時(shí)間一直在寫一個(gè)整站,前幾天才基本完成了,所以抽個(gè)時(shí)間寫了一篇對(duì)于php安全的總結(jié)。技術(shù)含量不高,過(guò)不了也沒(méi)關(guān)系,希望能一些準(zhǔn)備寫網(wǎng)站的朋友一點(diǎn)引導(dǎo)。
    2014-07-07
  • PHP異常Parse error: syntax error, unexpected T_VAR錯(cuò)誤解決方法

    PHP異常Parse error: syntax error, unexpected T_VAR錯(cuò)誤解決方法

    在PHP中根本不需要使用var聲明的,但是當(dāng)一個(gè)變量作為一個(gè)類的成員變量的時(shí)候,使用var還是沒(méi)有問(wèn)題的
    2014-05-05
  • PHP設(shè)計(jì)模式之中介者模式淺析

    PHP設(shè)計(jì)模式之中介者模式淺析

    這篇文章主要介紹了PHP設(shè)計(jì)模式之中介者模式,中介者模式(Mediator Pattern)是一種常用的設(shè)計(jì)模式,用于解決各個(gè)對(duì)象之間的復(fù)雜依賴關(guān)系,使得各個(gè)對(duì)象之間可以獨(dú)立地改變自己的行為,而不需要與其他對(duì)象發(fā)生直接的交互
    2023-04-04
  • PHP中應(yīng)該避免使用同名變量(拆分臨時(shí)變量)

    PHP中應(yīng)該避免使用同名變量(拆分臨時(shí)變量)

    這篇文章主要介紹了PHP中應(yīng)該避免使用同名變量(拆分臨時(shí)變量),當(dāng)一個(gè)臨時(shí)變量被賦值多次時(shí),那么將其拆分成多個(gè),除非它是一個(gè)循環(huán)計(jì)數(shù)器,需要的朋友可以參考下
    2015-04-04
  • php判斷用戶是否手機(jī)訪問(wèn)代碼

    php判斷用戶是否手機(jī)訪問(wèn)代碼

    之前有一個(gè)案例用到判斷用戶是手機(jī)訪問(wèn)還是電腦訪問(wèn),然后給用戶展示相應(yīng)的頁(yè)面。最初是用js去做,但是準(zhǔn)確度不高,最終采用了PHP來(lái)做,經(jīng)測(cè)試基本上都能判斷準(zhǔn)確。
    2015-06-06

最新評(píng)論

遂平县| 清远市| 阿尔山市| 庆安县| 鄂州市| 开原市| 汉川市| 利津县| 深圳市| 茌平县| 科技| 廉江市| 牡丹江市| 清远市| 葫芦岛市| 舟山市| 黄骅市| 龙胜| 肃南| 平度市| 津南区| 赫章县| 南京市| 博湖县| 保山市| 清远市| 汉中市| 秭归县| 元江| 望江县| 钟山县| 常熟市| 南宁市| 房山区| 满城县| 凤台县| 黑水县| 玉龙| 黎川县| 新丰县| 永平县|