相關(guān)關(guān)鍵詞
關(guān)于我們
最新文章
- PHP中opcode緩存簡單用法分析
- thinkPHP控制器變量在模板中的顯示方法示例
- PHP move_uploaded_file() 函數(shù)(將上傳的文件移動到新位置)
- dirname(__FILE__)的含義和應(yīng)用說明
- thinkPHP5框架實(shí)現(xiàn)分頁查詢功能的方法示例
- PHP中單雙號與變量
- PHP獲得當(dāng)日零點(diǎn)時(shí)間戳的方法分析
- Laravel ORM對Model::find方法進(jìn)行緩存示例詳解
- PHP讀寫文件高并發(fā)處理操作實(shí)例詳解
- 【CLI】利用Curl下載文件實(shí)時(shí)進(jìn)度條顯示的實(shí)現(xiàn)
PHP使用finfo_file()函數(shù)檢測上傳圖片類型的實(shí)現(xiàn)方法
本文實(shí)例講述了PHP使用finfo_file()函數(shù)檢測上傳圖片類型的實(shí)現(xiàn)方法。分享給大家供大家參考,具體如下:
在輸入輸出中,文件的交互必不可少,比如文件的上傳什么的。這里我們來解決一個(gè)小問題,就是如何判斷用戶上傳文件的文件類型。
舉一個(gè)應(yīng)用場面:在我們的Web應(yīng)用中,比如用戶上傳頭像,要求是png,jpg,gif格式,接收到圖片后會根據(jù)圖片格式類型做不同的頭像切割處理,但個(gè)別用戶會傳一些只更改過文件后綴的非標(biāo)準(zhǔn)圖片,比如nowamagic.jpg 強(qiáng)行修改成 nowamagic.png,這樣程序無法對該類型圖片進(jìn)行切割,切割失敗。這個(gè)時(shí)候就需要對文件進(jìn)行檢測,并且僅僅根據(jù)后綴來判斷是不行的。
這種這么常見的需求,PHP肯定自帶了某些函數(shù)來實(shí)現(xiàn)的,這個(gè)函數(shù)就是 finfo_file
。
finfo_file
(PHP >= 5.3.0, PECL fileinfo >= 0.1.0)
finfo_file -- finfo::file — Return information about a file,This function is used to get information about a file.
函數(shù)很簡單,看看官方文檔就大概清楚了,這里就舉一個(gè)使用例子吧,就是上傳一張圖片,并判斷它的類型:
<html> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <head> <title>文件上傳</title> </head> <body> <form accept="" method="post" enctype="multipart/form-data"> <input type="file" name="img[]" /><br /> <input type="submit" name="s" /><br /> </form> <?php //上傳文件信息 $img = $_FILES['img']; if ($img) { //文件存放目錄,和本php文件同級 $dir = dirname(__file__); $filename = $img['name'][0]; $tempname = $img['tmp_name'][0]; $savepath = "$dir\\$filename"; $state = move_uploaded_file($tempname, $savepath); //如果上傳成功,預(yù)覽 if($state) { echo "<img src='$filename' alt='$filename' /> "; } $finfo = finfo_open(FILEINFO_MIME_TYPE); //$mime = finfo_file($finfo, dirname(__FILE__)."/".$filename); $mime = finfo_file($finfo, $savepath); echo $mime; } ?> </body> </html>