校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

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

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

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

前言

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

php怎么樣驗(yàn)證文件類型?

先來看一個(gè)簡單的方法:

?php
function checkFileType($fileName){ 
  $file = fopen($fileName, "rb"); 
  $bin = fread($file, 2); //只讀2字節(jié) 
  fclose($file); 
 // C為無符號整數(shù),網(wǎng)上搜到的都是c,為有符號整數(shù),這樣會(huì)產(chǎn)生負(fù)數(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);

下來提供一個(gè)類的實(shí)現(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); 打?。簆ng
 */
class cFileTypeCheck
{
  private static $_TypeList=array();
  private static $CheckClass=null;
  private function __construct($filename)
  {
    self::$_TypeList=$this->getTypeList();
  }

  /**
   *處理文件類型映射關(guān)系表*
   *
   * @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é) 各個(gè)不同文件類型,頭信息不一樣。
    fclose($file);

    $typelist=self::$_TypeList;
    foreach ($typelist as $v)
    {
      $blen=strlen(pack("H*",$v[0])); //得到文件頭標(biāo)記字節(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 個(gè)字節(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;

總結(jié)

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

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

標(biāo)簽:白銀 綏化 衡陽 辛集 廊坊 鄂州 太原 崇左

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PHP如何根據(jù)文件頭檢測文件類型實(shí)例代碼》,本文關(guān)鍵詞  PHP,如何,根據(jù),文件,頭,檢測,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PHP如何根據(jù)文件頭檢測文件類型實(shí)例代碼》相關(guān)的同類信息!
  • 本頁收集關(guān)于PHP如何根據(jù)文件頭檢測文件類型實(shí)例代碼的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    亚洲午夜久久久久| 日韩美女主播在线视频一区二区三区| 国产精品成人在线观看| 91在线视频网址| 又紧又大又爽精品一区二区| 欧美在线免费播放| 美女在线一区二区| 久久久久久久久久看片| av在线不卡观看免费观看| 一区二区三区四区在线播放| 欧美久久婷婷综合色| 国产最新精品精品你懂的| 国产精品第五页| 欧美精品18+| 国产成人av电影在线播放| 亚洲免费av在线| 日韩午夜小视频| av电影在线观看一区| 婷婷久久综合九色综合绿巨人 | 91.成人天堂一区| 精品一区二区三区欧美| 国产精品你懂的在线| 欧美日韩免费视频| 国产成人综合亚洲网站| 亚洲成av人影院在线观看网| 久久影院视频免费| 欧美视频在线观看一区| 国产精品资源站在线| 一个色综合av| 久久精品亚洲国产奇米99| 欧美在线观看一二区| 国产一区二区三区在线观看免费 | 国产欧美日韩在线视频| 欧美色涩在线第一页| 福利一区二区在线| 日韩av在线播放中文字幕| 国产精品国产三级国产普通话蜜臀| 欧美精品第1页| fc2成人免费人成在线观看播放| 日韩高清电影一区| 亚洲欧美日韩久久精品| 精品久久久久久无| 欧美高清视频一二三区| 97久久超碰国产精品电影| 久久电影网电视剧免费观看| 亚洲综合色视频| 国产精品久久久久久久久快鸭 | 91麻豆国产香蕉久久精品| 久久超碰97中文字幕| 亚洲午夜在线电影| 日韩一区在线看| 国产日产欧美一区二区三区| 日韩三级在线免费观看| 欧美精品在线视频| 一本色道a无线码一区v| 高清不卡在线观看av| 国内精品国产成人| 久久精品国内一区二区三区| 婷婷综合五月天| 亚洲777理论| 亚洲一区二区综合| 一区二区国产视频| 一个色综合av| 一区二区三区av电影 | 亚洲国产精品av| 久久亚洲精品小早川怜子| 欧美r级电影在线观看| 91精品国产综合久久精品图片| 欧美视频一区二区| 欧美午夜理伦三级在线观看| 91高清在线观看| 欧美午夜在线一二页| 欧美日韩在线综合| 欧美午夜精品一区二区蜜桃| 欧美三级一区二区| 欧美日韩黄色影视| 在线观看91av| 精品电影一区二区| 久久先锋资源网| 国产视频一区在线播放| 中文一区在线播放| 中文字幕综合网| 亚洲激情综合网| 偷窥少妇高潮呻吟av久久免费| 日韩av在线发布| 国产一区二区三区四区五区入口 | 日韩视频一区在线观看| 欧美一区二区福利视频| 精品国产凹凸成av人导航| 国产片一区二区| 综合欧美亚洲日本| 亚洲图片自拍偷拍| 久久成人羞羞网站| 国产成人午夜视频| 91美女在线看| 91精品在线麻豆| 精品日韩成人av| 国产精品久久久久久久久免费相片| 综合av第一页| 爽好多水快深点欧美视频| 麻豆精品新av中文字幕| 国产高清视频一区| 欧日韩精品视频| 精品久久一区二区三区| 成人欧美一区二区三区黑人麻豆 | 久久9热精品视频| 成人在线综合网| 欧美图区在线视频| 精品sm在线观看| 自拍偷在线精品自拍偷无码专区 | 国产91丝袜在线播放| 色婷婷av久久久久久久| 欧美一区二区三区视频免费| 国产亚洲一区字幕| 亚洲女女做受ⅹxx高潮| 精品一二线国产| 色域天天综合网| 26uuu亚洲| 亚洲一区二区三区美女| 国产精品99久久久久久宅男| 欧美性一区二区| 久久精品免费在线观看| 亚洲.国产.中文慕字在线| 国产精品一区二区三区四区| 欧美日韩一区二区三区在线看| 国产三级欧美三级日产三级99| 午夜精品久久久久影视| 国产99一区视频免费| 91精品国产乱码久久蜜臀| 亚洲欧美另类图片小说| 国产精品一区二区x88av| 欧美日韩国产一区| 亚洲欧美激情插| 国产精品系列在线观看| 日韩视频在线一区二区| 亚洲成人精品一区二区| www.日韩av| 久久免费精品国产久精品久久久久| 亚洲一级二级三级| 99视频在线观看一区三区| 久久久噜噜噜久久人人看| 日本中文字幕一区二区视频 | 国产大陆a不卡| 欧美一区二区在线不卡| 亚洲一区国产视频| 色综合一区二区| 中文字幕五月欧美| 国产成人综合视频| 久久久久久久综合| 毛片av中文字幕一区二区| 欧美日韩一区二区三区高清 | 国产精品久久午夜| 国产激情视频一区二区在线观看 | 91精品国产综合久久久蜜臀图片| 中文字幕色av一区二区三区| 免费观看一级欧美片| 色哟哟在线观看一区二区三区| 中文字幕精品一区二区三区精品| 国产毛片精品视频| 精品久久久久久无| 久99久精品视频免费观看| 欧美精品久久久久久久久老牛影院| 亚洲综合男人的天堂| 日本高清不卡aⅴ免费网站| 日本一区二区久久| 成人动漫av在线| 国产精品久久久久婷婷| 9色porny自拍视频一区二区| 亚洲欧洲无码一区二区三区| 91香蕉国产在线观看软件| 亚洲视频一区二区在线观看| 色综合天天综合在线视频| 日韩理论片中文av| 在线欧美小视频| 日日夜夜免费精品视频| 91精品婷婷国产综合久久竹菊| 成人app在线观看| 成人手机电影网| 国产女主播视频一区二区| 国产成人在线视频网站| 国产精品护士白丝一区av| 91在线观看下载| 亚洲成人免费视频| 91精品国产日韩91久久久久久| 精品一区二区三区的国产在线播放| 久久久午夜精品| 色综合中文字幕国产 | 亚洲品质自拍视频网站| 色综合天天综合在线视频| 亚洲超碰97人人做人人爱| 欧美成人三级电影在线| 国产激情一区二区三区| 亚洲伦在线观看| 3d成人动漫网站| 国产精品亚洲一区二区三区妖精| 国产精品嫩草久久久久| 欧美日韩亚洲综合一区| 国产一区免费电影| 依依成人综合视频| 91精品久久久久久久91蜜桃|