婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

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

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

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

前言

什么是文件頭部Bom? 說白了,就是在保存文件的時候,文件前面會多出一串隱藏的字符,文件簽名一般都在文件的頭部,如果你用十六進制方式查看文件,你就可以看到文件的一些簽名信息。如用uestudio以十六進制方式查看zip格式的文件,其文件內容頭部有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字節 
  fclose($file); 
 // C為無符號整數,網上搜到的都是c,為有符號整數,這樣會產生負數判斷不正常
  $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);

下來提供一個類的實現:

?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字節 各個不同文件類型,頭信息不一樣。
    fclose($file);

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

總結

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

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

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

巨人網絡通訊聲明:本文標題《PHP如何根據文件頭檢測文件類型實例代碼》,本文關鍵詞  PHP,如何,根據,文件,頭,檢測,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PHP如何根據文件頭檢測文件類型實例代碼》相關的同類信息!
  • 本頁收集關于PHP如何根據文件頭檢測文件類型實例代碼的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    日韩天堂在线观看| 国产91精品一区二区| 色拍拍在线精品视频8848| 欧美裸体一区二区三区| 色综合久久九月婷婷色综合| 成人免费毛片app| 国产精品久久久久影视| 亚洲视频在线观看一区| 亚洲激情欧美激情| 久久66热偷产精品| 欧美中文字幕久久| 国产精品久久久久四虎| 亚洲视频免费看| 91精品福利视频| 午夜激情久久久| 精品成人一区二区三区| 丰满少妇在线播放bd日韩电影| 日本一区二区久久| 欧美色综合久久| 国产一区二区不卡| 国产精品欧美精品| 欧美精品18+| 国产成人av福利| 亚洲午夜激情av| 国产午夜亚洲精品不卡| 色狠狠桃花综合| 国产在线视视频有精品| 亚洲一区二区在线免费看| 91精品国产麻豆国产自产在线| 国产一区激情在线| 亚洲福利视频导航| 精品av久久707| 在线亚洲高清视频| 成人黄色国产精品网站大全在线免费观看| 亚洲综合男人的天堂| 精品99久久久久久| 91.麻豆视频| 色美美综合视频| 国产福利电影一区二区三区| 天天操天天干天天综合网| 国产精品成人在线观看| 日韩久久精品一区| 欧美日韩国产一二三| 99久精品国产| 国产一区二区毛片| 日韩精品乱码av一区二区| 亚洲女性喷水在线观看一区| 国产亚洲成aⅴ人片在线观看| 国产精品另类一区| 国产+成+人+亚洲欧洲自线| 国产欧美日韩激情| 在线观看免费视频综合| 日韩精品高清不卡| 最新欧美精品一区二区三区| 久久先锋影音av| 欧美色区777第一页| www.亚洲人| 色一情一乱一乱一91av| 色综合久久综合中文综合网| 成人ar影院免费观看视频| 国产自产v一区二区三区c| 日本三级韩国三级欧美三级| 免费精品视频最新在线| 一区二区三区中文字幕电影| 麻豆久久一区二区| 久久精品男人天堂av| 精品久久免费看| 国产精品国产三级国产aⅴ原创 | 日本v片在线高清不卡在线观看| 国产精品理论片在线观看| 久久日韩粉嫩一区二区三区| 精品99一区二区三区| 日韩女优毛片在线| 亚洲精品在线网站| 国产亚洲一区二区在线观看| 国产午夜精品一区二区三区视频 | 奇米精品一区二区三区在线观看一 | 狠狠色综合播放一区二区| 久国产精品韩国三级视频| 国产一区不卡精品| 岛国精品一区二区| 色天天综合久久久久综合片| 日本电影亚洲天堂一区| 91麻豆精品国产91久久久| 精品国产乱码久久久久久蜜臀| 国产亚洲成av人在线观看导航| 一区二区中文字幕在线| 亚洲一区二区精品3399| 奇米精品一区二区三区在线观看| 国产伦精一区二区三区| 99re成人精品视频| 91麻豆精品国产综合久久久久久| 久久久久99精品一区| 亚洲靠逼com| 久久91精品国产91久久小草 | 国产91色综合久久免费分享| 91色porny| 日韩精品一区二区在线观看| 亚洲色欲色欲www| 精品亚洲欧美一区| 欧美三级电影一区| 国产精品沙发午睡系列990531| 亚洲国产日韩一级| 成人一区二区三区| 日韩一级欧美一级| 亚洲欧美另类小说视频| 久88久久88久久久| 欧美视频中文一区二区三区在线观看| 日韩欧美一区二区不卡| 一区二区视频在线| 懂色av一区二区三区蜜臀 | 婷婷六月综合亚洲| 国产a区久久久| 日韩精品中文字幕在线一区| 亚洲精品欧美在线| 成人免费精品视频| 久久综合资源网| 日韩精品成人一区二区三区| 91免费看视频| 中文字幕一区二区不卡| 蜜桃精品视频在线| 欧美喷水一区二区| 艳妇臀荡乳欲伦亚洲一区| 国产美女在线精品| 精品国产一区二区三区av性色| 一区二区三区在线高清| 成人黄页毛片网站| 久久中文娱乐网| 久久精品国产久精国产| 欧美久久久久久久久| 亚洲精品老司机| 91浏览器入口在线观看| 亚洲欧洲一区二区在线播放| 成人午夜av电影| 成人免费视频在线观看| 成人a级免费电影| 国产精品不卡在线观看| 99精品热视频| 亚洲女女做受ⅹxx高潮| 一本色道久久综合亚洲精品按摩| 国产精品久久久久久久岛一牛影视 | 亚洲欧美在线另类| 成人免费毛片app| 亚洲人成在线播放网站岛国| 成人美女视频在线观看18| 国产精品网站在线观看| 99r精品视频| 亚洲aⅴ怡春院| 日韩欧美亚洲国产另类| 老色鬼精品视频在线观看播放| 欧美一级黄色大片| 国产综合色产在线精品| 国产精品情趣视频| 91蝌蚪porny| 午夜精品123| 精品日韩av一区二区| 国产成人综合亚洲网站| 国产精品乱码人人做人人爱| 91麻豆国产在线观看| 亚洲成人一二三| 26uuu国产在线精品一区二区| 国产露脸91国语对白| 亚洲日本电影在线| 欧美日韩色综合| 久久国产麻豆精品| 中文字幕一区二区三区av| 欧美日韩国产高清一区| 国产一区二区三区黄视频 | 日日骚欧美日韩| 久久久久国产免费免费| 在线一区二区视频| 久久成人精品无人区| 亚洲欧洲国产专区| 日韩亚洲欧美在线| 成人永久免费视频| 国产精品国产三级国产aⅴ中文| 色噜噜狠狠色综合中国| 精品在线一区二区三区| 色哟哟国产精品| 精品一区二区三区影院在线午夜 | 偷拍亚洲欧洲综合| 国产三级精品视频| 日韩一区和二区| 91豆麻精品91久久久久久| 激情久久五月天| 日韩精品成人一区二区三区| 日韩美女视频一区二区| 日韩欧美一区二区免费| 欧美三级韩国三级日本三斤| 不卡免费追剧大全电视剧网站| 蜜桃视频在线观看一区二区| 一区二区三区在线观看欧美| 亚洲国产精品精华液2区45| 精品美女被调教视频大全网站| 欧美撒尿777hd撒尿| 日本道精品一区二区三区| 国产成人av资源| 国产精品18久久久久久久久久久久 | 成人av资源在线| 国产精选一区二区三区|