欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > PHP如何根據(jù)文件頭檢測文件類型實例代碼

PHP如何根據(jù)文件頭檢測文件類型實例代碼

熱門標簽:神龍斗士電話機器人 代理打電話機器人 萍鄉(xiāng)商鋪地圖標注 企業(yè)400電話辦理多少費用 桂陽公司如何做地圖標注 太原400電話申請流程 電信外呼系統(tǒng)多少錢一個月 合肥企業(yè)外呼系統(tǒng)線路 宿州正規(guī)外呼系統(tǒng)軟件

前言

什么是文件頭部Bom? 說白了,就是在保存文件的時候,文件前面會多出一串隱藏的字符,文件簽名一般都在文件的頭部,如果你用十六進制方式查看文件,你就可以看到文件的一些簽名信息。如用uestudio以十六進制方式查看zip格式的文件,其文件內(nèi)容頭部有50 4B 03 04這樣的十六進制信息。同理jpg文件狀況有FF D8 FF E0 xx xx 4A 46這樣的十六進制信息,其實這此十六進制都是表示一些特殊字條。

php怎么樣驗證文件類型?

先來看一個簡單的方法:

?php
function checkFileType($fileName){ 
  $file = fopen($fileName, "rb"); 
  $bin = fread($file, 2); //只讀2字節(jié) 
  fclose($file); 
 // C為無符號整數(shù),網(wǎng)上搜到的都是c,為有符號整數(shù),這樣會產(chǎn)生負數(shù)判斷不正常
  $strInfo = @unpack("C2chars", $bin);
  $typeCode = intval($strInfo['chars1'].$strInfo['chars2']); 
  $fileType = ''; 

 switch( $typeCode )
 {
 case '255216':
 return $typeCode. ' : ' .'jpg';
 break;
 case '7173':
 return $typeCode. ' : ' .'gif';
 break;
 case '13780':
 return $typeCode. ' : ' .'png';
 break;
 case '6677':
 return $typeCode. ' : ' .'bmp';
 break;
 case '7790':
 return $typeCode. ' : ' .'exe';
 break;
 case '7784':
 return $typeCode. ' : ' .'midi';
 break;
 case '8297':
 return $typeCode. ' : ' .'rar';
 break;
 default:
 return $typeCode. ' : ' .'Unknown';
 break;
 }
 //return $typeCode;
 }

$file_name = '11.doc';
echo checkFileType($file_name);

下來提供一個類的實現(xiàn):

?php
/*通過文件名,獲得文件類型*
 *@author chengmo QQ:8292669*
 *@copyright a >http://www.cnblogs.com/chengmo/a> 2010-10-17
 *@version 0.1
 *$filename="d:/1.png";echo cFileTypeCheck::getFileType($filename); 打印:png
 */
class cFileTypeCheck
{
  private static $_TypeList=array();
  private static $CheckClass=null;
  private function __construct($filename)
  {
    self::$_TypeList=$this->getTypeList();
  }

  /**
   *處理文件類型映射關系表*
   *
   * @param string $filename 文件類型
   * @return string 文件類型,沒有找到返回:other
   */
  private function _getFileType($filename)
  {
    $filetype="other";
    if(!file_exists($filename)) throw new Exception("no found file!");
    $file = @fopen($filename,"rb");
    if(!$file) throw new Exception("file refuse!");
    $bin = fread($file, 15); //只讀15字節(jié) 各個不同文件類型,頭信息不一樣。
    fclose($file);

    $typelist=self::$_TypeList;
    foreach ($typelist as $v)
    {
      $blen=strlen(pack("H*",$v[0])); //得到文件頭標記字節(jié)數(shù)
      $tbin=substr($bin,0,intval($blen)); ///需要比較文件頭長度

      if(strtolower($v[0])==strtolower(array_shift(unpack("H*",$tbin))))
      {
        return $v[1];
      }
    }
    return $filetype;
  }

  /**
   *得到文件頭與文件類型映射表*
   *
   * @return array array(array('key',value)...)
   */
  public function getTypeList()
  {
    return array(array("FFD8FFE1","jpg"),
    array("89504E47","png"),
    array("47494638","gif"),
    array("49492A00","tif"),
    array("424D","bmp"),
    array("41433130","dwg"),
    array("38425053","psd"),
    array("7B5C727466","rtf"),
    array("3C3F786D6C","xml"),
    array("68746D6C3E","html"),
    array("44656C69766572792D646174","eml"),
    array("CFAD12FEC5FD746F","dbx"),
    array("2142444E","pst"),
    array("D0CF11E0","xls/doc"),
    array("5374616E64617264204A","mdb"),
    array("FF575043","wpd"),
    array("252150532D41646F6265","eps/ps"),
    array("255044462D312E","pdf"),
    array("E3828596","pwl"),
    array("504B0304","zip"),
    array("52617221","rar"),
    array("57415645","wav"),
    array("41564920","avi"),
    array("2E7261FD","ram"),
    array("2E524D46","rm"),
    array("000001BA","mpg"),
    array("000001B3","mpg"),
    array("6D6F6F76","mov"),
    array("3026B2758E66CF11","asf"),
    array("4D546864","mid"));
  }


  public static function getFileType($filename)
  {
    if(!self::$CheckClass) self::$CheckClass=new self($filename);
    $class=self::$CheckClass;
    return $class->_getFileType($filename);
  }

}

$filename="22.jpg";
echo $filename,"t",cFileTypeCheck::getFileType($filename),"rn";
$filename="11.doc";
echo $filename,"t",cFileTypeCheck::getFileType($filename),"rn";

或者可以這么檢測:

?php
$filename = '22.jpg';

$extname = strtolower(substr($filename, strrpos($filename, '.') + 1));
echo $extname.'br />';
$file = @fopen($filename, 'rb');
  if ($file)
  {
    $str = @fread($file, 0x400); // 讀取前 1024 個字節(jié)
 echo substr($str, 0, 4);
    @fclose($file);
  }
 if (substr($str, 0, 4) == 'MThd'  $extname != 'txt')
    {
      $format = 'mid';
    }
    elseif (substr($str, 0, 4) == 'RIFF'  $extname == 'wav')
    {
      $format = 'wav';
    }
    elseif (substr($str ,0, 3) == "/xFF/xD8/xFF")
    {
      $format = 'jpg';
    }
    elseif (substr($str ,0, 4) == 'GIF8'  $extname != 'txt')
    {
      $format = 'gif';
    }
    elseif (substr($str ,0, 8 ) == "/x89/x50/x4E/x47/x0D/x0A/x1A/x0A")
    {
      $format = 'png';
    }
    elseif (substr($str ,0, 2) == 'BM'  $extname != 'txt')
    {
      $format = 'bmp';
    }
    elseif ((substr($str ,0, 3) == 'CWS' || substr($str ,0, 3) == 'FWS')  $extname != 'txt')
    {
      $format = 'swf';
    }
    elseif (substr($str ,0, 4) == "/xD0/xCF/x11/xE0")
    {  // D0CF11E == DOCFILE == Microsoft Office Document
      if (substr($str,0x200,4) == "/xEC/xA5/xC1/x00" || $extname == 'doc')
      {
        $format = 'doc';
      }
      elseif (substr($str,0x200,2) == "/x09/x08" || $extname == 'xls')
      {
        $format = 'xls';
      } elseif (substr($str,0x200,4) == "/xFD/xFF/xFF/xFF" || $extname == 'ppt')
      {
        $format = 'ppt';
      }
    } elseif (substr($str ,0, 4) == "PK/x03/x04")
    {
      $format = 'zip';
    } elseif (substr($str ,0, 4) == 'Rar!'  $extname != 'txt')
    {
      $format = 'rar';
    } elseif (substr($str ,0, 4) == "/x25PDF")
    {
      $format = 'pdf';
    } elseif (substr($str ,0, 3) == "/x30/x82/x0A")
    {
      $format = 'cert';
    } elseif (substr($str ,0, 4) == 'ITSF'  $extname != 'txt')
    {
      $format = 'chm';
    } elseif (substr($str ,0, 4) == "/x2ERMF")
    {
      $format = 'rm';
    } elseif ($extname == 'sql')
    {
      $format = 'sql';
    } elseif ($extname == 'txt')
    {
      $format = 'txt';
    }

 echo $format;

總結

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

您可能感興趣的文章:
  • php 讀取文件頭判斷文件類型的實現(xiàn)代碼
  • PHP取二進制文件頭快速判斷文件類型的實現(xiàn)代碼
  • PHP 基于文件頭的文件類型驗證類函數(shù)
  • php通過文件頭檢測文件類型通用代碼類(zip,rar等)
  • php實現(xiàn)獲取文件mime類型的方法
  • PHP 文件類型判斷代碼
  • php文件類型MIME對照表(比較全)
  • php限制上傳文件類型并保存上傳文件的方法
  • php中header設置常見文件類型的content-type
  • PHP判斷上傳文件類型的解決辦法

標簽:白銀 綏化 衡陽 辛集 廊坊 鄂州 太原 崇左

巨人網(wǎng)絡通訊聲明:本文標題《PHP如何根據(jù)文件頭檢測文件類型實例代碼》,本文關鍵詞  PHP,如何,根據(jù),文件,頭,檢測,;如發(fā)現(xiàn)本文內(nèi)容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PHP如何根據(jù)文件頭檢測文件類型實例代碼》相關的同類信息!
  • 本頁收集關于PHP如何根據(jù)文件頭檢測文件類型實例代碼的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    三级在线观看免费大全| 亚洲国产精品二十页| 亚洲一区二区在线观看视频 | 亚洲蜜臀av乱码久久精品蜜桃| 国产真实乱偷精品视频免| 成年人免费观看视频网站| 日韩一区二区精品在线观看| 亚洲成人一区在线| 亚洲自拍偷拍精品| 日韩一区二区精品葵司在线 | 色婷婷国产精品久久包臀| 亚洲欧洲国产专区| 波多野结衣视频一区| 色激情天天射综合网| 亚洲欧美区自拍先锋| av在线免费观看不卡| 欧美在线一区二区三区| 亚洲一线二线三线久久久| 极品白嫩的小少妇| 欧美一卡二卡在线观看| 老司机精品视频导航| 欧美a在线播放| 国产精品乱码人人做人人爱 | 国产男女猛烈无遮挡a片漫画| 日韩一区二区三区三四区视频在线观看| 午夜精品久久久久久久99水蜜桃| 人妻无码中文久久久久专区| 日韩欧美国产综合| 精品一区二区三区香蕉蜜桃| 日本午夜精品视频| 亚洲欧美自拍偷拍色图| 91在线你懂得| 91精品国产aⅴ一区二区| 精品影院一区二区久久久| 精品手机在线视频| 亚洲欧美aⅴ...| v天堂中文在线| 26uuu精品一区二区在线观看| 国产精一区二区三区| 午夜少妇久久久久久久久| 亚洲国产色一区| 丰腴饱满的极品熟妇| 国产精品免费久久久久| 女女调教被c哭捆绑喷水百合| 日韩一二三区视频| 国产精品99久久久久久久vr| 色噜噜狠狠色综合中国| 视频在线在亚洲| 国产一区二区三区视频播放| 亚洲欧美另类图片小说| 美女网站视频在线观看| ww久久中文字幕| 99re热这里只有精品视频| 欧美一区欧美二区| 国产成人av电影在线播放| 欧美少妇xxx| 精品一二线国产| 在线精品视频一区二区三四| 欧美96一区二区免费视频| 91 在线视频| 丝袜亚洲精品中文字幕一区| 无码人妻精品中文字幕 | 欧美丰满熟妇bbb久久久| 久久婷婷成人综合色| 91小视频在线免费看| 精品国精品国产| 97精品电影院| 久久久久国产精品免费免费搜索| 91麻豆精东视频| 久久久精品免费网站| 欧美69精品久久久久久不卡| 久久精品人人爽人人爽| 欧美性猛交xx| 国产清纯白嫩初高生在线观看91| 国产成人精品综合久久久久99| 久久亚洲综合色一区二区三区 | voyeur盗摄精品| 欧美成人一级视频| 两女双腿交缠激烈磨豆腐 | 国产精品无码永久免费不卡| 国产精品乱人伦一区二区| 中国黄色a级片| 亚洲男人的天堂在线aⅴ视频| 日本xxxxxxxxx18| 亚洲a一区二区| 色视频一区二区| 国产精品自拍毛片| 日韩丝袜情趣美女图片| 91亚洲精品久久久蜜桃| 国产无一区二区| 极品粉嫩小仙女高潮喷水久久| 亚洲摸摸操操av| 91狠狠综合久久久| 久久超碰97中文字幕| 6080国产精品一区二区| 99re这里都是精品| 中文字幕一区二区三区四区不卡 | 亚洲啪啪综合av一区二区三区| 国产毛片欧美毛片久久久| 欧美性x x x| 久久99精品久久久久久国产越南| 欧美高清www午色夜在线视频| aaa欧美日韩| 国产精品灌醉下药二区| 久久久久亚洲AV成人无在| 免费观看在线色综合| 欧美精品电影在线播放| 91丨国产丨九色丨pron| 中文字幕一区二区三区不卡在线| 日本美女bbw| 久久99久久99精品免视看婷婷| 91精品国产色综合久久不卡蜜臀| 97精品久久久午夜一区二区三区| 亚洲欧洲成人精品av97| 国产高清视频免费在线观看| 激情综合色综合久久| 精品久久人人做人人爰| 在线黄色免费网站| 亚洲v精品v日韩v欧美v专区| 欧美日韩精品是欧美日韩精品| 91亚洲永久精品| 一区二区三区电影在线播| 一本到不卡免费一区二区| 成人免费看黄yyy456| 中文字幕欧美一| 一本大道久久a久久精二百| 成人av电影免费在线播放| 国产精品不卡视频| 校园春色 亚洲| 97超碰欧美中文字幕| 亚洲激情av在线| 欧美日韩在线电影| 久久久老熟女一区二区三区91| 午夜精品久久久久久| 日韩视频永久免费| 国产高潮呻吟久久| 国产一区视频网站| 中文字幕高清一区| 一本色道久久综合狠狠躁的推荐 | 亚洲愉拍自拍另类高清精品| 欧美日韩另类国产亚洲欧美一级| 国产精品偷伦视频免费观看了| 亚洲国产视频直播| 日韩一级二级三级| 337人体粉嫩噜噜噜| 国产精品12区| 亚洲色图视频网| 欧美精品日韩综合在线| 精品黑人一区二区三区观看时间| 奇米色一区二区三区四区| 久久久久国产精品麻豆ai换脸| 欧美特黄一级片| 不卡视频在线看| 亚洲成a天堂v人片| 精品少妇一区二区三区在线播放| 国产精品无码无卡无需播放器| 成人激情综合网站| 亚洲午夜久久久久久久久电影网 | 粉嫩精品久久99综合一区| 风流少妇一区二区| 亚洲综合成人网| 精品国产在天天线2019| 色哟哟一一国产精品| 91浏览器打开| 麻豆91在线播放| 国产精品久久久99| 777xxx欧美| 91麻豆精品久久毛片一级| 99精品视频中文字幕| 亚洲国产裸拍裸体视频在线观看乱了 | 青青操在线视频观看| 99久久国产综合精品女不卡| 亚洲v日本v欧美v久久精品| 久久亚洲影视婷婷| 91久久精品日日躁夜夜躁欧美| 亚洲 欧美 日韩在线| 国产一区二区三区| 亚洲一区二区三区四区五区黄| 日韩欧美国产系列| 一本大道久久精品懂色aⅴ| 丰满大乳奶做爰ⅹxx视频 | 精品久久人人做人人爽| 一本久久a久久免费精品不卡| 国产精品麻豆入口| 成人免费不卡视频| 日韩**一区毛片| 1024国产精品| 精品国内二区三区| 欧美午夜寂寞影院| 九九热久久免费视频| 久久久久久无码精品人妻一区二区| 久久精品国产秦先生| 一区二区三区四区在线| 久久久久久久一区| 欧美另类高清zo欧美| 丰满少妇被猛烈进入一区二区| 91精品人妻一区二区三区蜜桃欧美| 成人h动漫精品一区二| 蜜桃av一区二区三区| 一区二区欧美视频|