這篇文章主要介紹了PHP使用finfo_file()函數檢測上傳圖片類型的實現方法,結合執行個體形式分析了finfo_file()函數的功能、使用方法及相關注意事項,需要的朋友可以參考下
在輸入輸出中,檔案的互動必不可少,比如檔案的上傳什麼的。這裡我們來解決一個小問題,就是如何判斷使用者上傳檔案的檔案類型。
舉一個應用場面:在我們的Web應用中,比如使用者上傳頭像,要求是png,jpg,gif格式,接收到圖片後會根據圖片格式類型做不同的頭像切割處理,但個別使用者會傳一些只更改過檔案尾碼的非標準圖片,比如nowamagic.jpg 強行修改成 nowamagic.png,這樣程式無法對該類型圖片進行切割,切割失敗。這個時候就需要對檔案進行檢測,並且僅僅根據尾碼來判斷是不行的。
這種這麼常見的需求,PHP肯定內建了某些函數來實現的,這個函數就是 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.
函數很簡單,看看官方文檔就大概清楚了,這裡就舉一個使用例子吧,就是上傳一張圖片,並判斷它的類型:
<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); //如果上傳成功,預覽 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>
以上就是本文的全部內容,希望對大家的學習有所協助。