一般情況下,取得類似這樣 test.txt, test.html, test.png 等副檔名沒什麼問題。
出現這樣子,比如:test.png.txt ,問題也不大,因為我們可以認為.png是檔案名稱而不是副檔名
但是,如果是 test.tar.gz 這種應該怎麼弄?白名單?
回複內容:
一般情況下,取得類似這樣 test.txt, test.html, test.png 等副檔名沒什麼問題。
出現這樣子,比如:test.png.txt ,問題也不大,因為我們可以認為.png是檔案名稱而不是副檔名
但是,如果是 test.tar.gz 這種應該怎麼弄?白名單?
檔案名稱尾碼應該規範 test.tar.gz .tar是打包檔案 .gz是壓縮檔
linux壓縮檔非常規範
test.tar.gz gzip壓縮的 tar打包
test.gz gzip壓縮的,沒有打包
test.tar.bz2 bunzip2壓縮的 tar打包
test.bz2 bunzip2壓縮的 沒有打包
在編程世界中只有對底層操作進行約束才可以實現優美的上層代碼。 如果某個檔案是用%做為檔案尾碼的
如果我的這介面會這麼設計
class fileInfo(){ public function reFileName(); #檔案名稱 public function getRealSuffix(); #最後一個 test.tar.gz 返回gz public function getFullSuffix(); #全部尾碼test.tar.gz 返回tar.gz public function getSuffixs(); #尾碼名數組}
可以限制檔案格式,通過已知尾碼匹配
副檔名可以這樣擷取
$info = pathinfo($file);echo $info['extension'];
其實你是想做檔案類型過濾吧,建議用mimetype而不是副檔名,更可靠一些。
可以參考 http://php.net/manual/zh/book.fileinfo.php 從php5.3開始可以直接使用了。