2012-04-28 95 views

回答

985

無需使用字符串函數。您可以使用的東西,實際上是專門爲你想要的東西:pathinfo()

$path = $_FILES['image']['name']; 
$ext = pathinfo($path, PATHINFO_EXTENSION); 
+0

$ path = $ _FILES ['image'] ['name'] [0];實際的文件名是在一個數組中。 pathinfo只會評估一個字符串。 – foureight84 2013-12-04 22:36:09

+8

@ foureight84:只有這樣,如果你有上傳字段名爲'圖像[]'... – ThiefMaster 2013-12-04 23:42:23

+2

我有點修改你的代碼一點點,並做了一個函數,以防有人想使用一個函數。這裏是代碼:function getFileExtension($ path){$ {$ ext = pathinfo($ path,PATHINFO_EXTENSION); return $ ext; } – 2014-12-05 14:56:26

12

如何

$ext = array_pop($userfile_extn); 
+7

這是一個可愛的功能:P – Michelle 2012-04-28 22:58:50

+2

我不建議這樣做。從現在開始,你依賴於陣列的順序。這是一個懶惰的解決方案,很可能會在將來導致問題。 – 2016-07-29 20:14:56

25

更好的方法是使用strrpos + SUBSTR(快於爆炸爲):

$userfile_name = $_FILES['image']['name']; 
$userfile_extn = substr($userfile_name, strrpos($userfile_name, '.')+1); 

但是,檢查類型一個文件,使用mime_content_type是一個更好的辦法: http://www.php.net/manual/en/function.mime-content-type.php

+3

比'pathinfo()'更好嗎?我不這麼認爲。 – ThiefMaster 2012-04-28 22:53:00

+1

比爆炸更好;-)。但是,你說得對,pathinfo是啓用時更好的方式(某些相互服務器禁用此功能...)。 – Julien 2012-04-28 22:56:05

+10

**重要說明**:這將失敗,路徑如下:'/ var/www/website.com/somefile'。 – brianreavis 2013-11-27 21:31:54

20

你可以用這個嘗試MIME類型

$image = getimagesize($_FILES['image']['tmp_name']); 

$image['mime']將返回mime類型。

該函數不需要GD庫。你可以找到文檔here

這將返回圖像的MIME類型。

有些人使用$_FILES["file"]["type"],但它不像瀏覽器給出的那樣可靠,而不是PHP給出的。

您可以使用pathinfo()作爲ThiefMaster建議檢索圖像擴展名。

首先確保圖像在開發過程中成功上傳,然後再對圖像執行任何操作。

45

這也能發揮作用:

$array = explode('.', $_FILES['image']['name']); 
$extension = end($array); 
+17

'只有變量應該通過引用傳遞',PHP手冊 – dader 2012-12-20 02:01:44

+1

這不是一個好方法,因爲'end'函數用於將數組的內部指針移動到數組的末尾並返回那個元素。問題是數組是通過引用傳遞的,因爲數組是動態生成的,所以不能通過引用傳遞,因此警告或失敗,這取決於您的PHP版本。 – SteveK 2013-05-19 02:27:03

+25

**重要說明**:這將失敗,路徑如下:'/ var/www/website.com/somefile'(最好使用pathinfo)。 – brianreavis 2013-11-27 21:30:59

相關問題