PHP:我將圖片文件上傳到名爲特殊格式的文件夾中,就像postid_posttype_postserial.ext
一樣,以便在顯示特定的博客文章時,我將根據該帖子的帖子ID,帖子類型使用此格式。但這裏的問題是我沒有該文件的擴展名。所以這裏是真正的問題,我如何得到我只知道名稱(在name.ext中)而不是擴展名的文件的擴展名。如何從沒有擴展名的文件名獲取文件擴展名?
僅供參考我搜索了這個,我發現幾個函數返回擴展名,但你必須傳遞一個完整的文件名與擴展名,以獲得有關文件的信息。
PHP:我將圖片文件上傳到名爲特殊格式的文件夾中,就像postid_posttype_postserial.ext
一樣,以便在顯示特定的博客文章時,我將根據該帖子的帖子ID,帖子類型使用此格式。但這裏的問題是我沒有該文件的擴展名。所以這裏是真正的問題,我如何得到我只知道名稱(在name.ext中)而不是擴展名的文件的擴展名。如何從沒有擴展名的文件名獲取文件擴展名?
僅供參考我搜索了這個,我發現幾個函數返回擴展名,但你必須傳遞一個完整的文件名與擴展名,以獲得有關文件的信息。
在你的情況下,你需要獲得MIME類型的文件,然後在PHP中執行switch
語句。你可以通過獲取文件的MIME類型:
$finfo = finfo_open(FILEINFO_MIME_TYPE); // return mime type ala mimetype extension
$mime_type = finfo_file($finfo, $postid_posttype_postserial_file);
finfo_close($finfo);
$mime_types = array(
'image/gif' => '.gif',
'image/jpeg' => '.jpg',
// etc.
);
$ext = array_key_exists($mime_type, $mime_types) ? $mime_types[$mime_type] : false;
echo $ext;
瞭解更多:http://www.php.net/manual/en/function.finfo-file.php
更新2:正如指出的評論,更換switch
到array
匹配更優雅。
'switch' /'case'有點荒謬。只需設置一個名爲'$ mime_type_array'的數組,然後以'$ mime_type_array [$ mime_type]'的形式訪問。也可以使用'array_key_exists'來確保'$ mime_type'類型實際上在'$ mime_type_array'中,就像這樣'if(array_key_exists(mime_type,$ mime_type_array)){$ ext = $ mime_type_array [$ mime_type]}' – JakeGould
Yeah thanks爲小費。我將編輯我的答案 – lodev09
另外,你可以簡化'$ ext = array_key_exists(mime_type,$ mime_type_array)? $ mime_type_array [$ mime_type]:null;'。只要記住當然也要設置一個帶鍵值的'$ mime_type_array'。 – JakeGould
您是否試圖從沒有擴展名的文件名中獲取圖像類型?或者文件名是否有你想要查找的擴展名? – FuzzyTree
[可以在不知道它的情況下獲得文件擴展名?]的可能的重複(http://stackoverflow.com/questions/6615009/is-it-possible-to-get-a-file-extension-without-knowing -it) – FuzzyTree