2012-04-28 18 views
362

संभव डुप्लिकेट:
How to extract a file extension in PHP?PHP में फ़ाइल एक्सटेंशन कैसे प्राप्त करें?

मैं एक छवि मैं अपलोड कर रहा की फाइल एक्सटेंशन प्राप्त करने के लिए इच्छा है, लेकिन मैं सिर्फ एक सरणी वापस मिलता है।

$userfile_name = $_FILES['image']['name']; 
$userfile_extn = explode(".", strtolower($_FILES['image']['name'])); 

क्या एक्सटेंशन को ही प्राप्त करने का कोई तरीका है?

उत्तर

985

स्ट्रिंग कार्यों का उपयोग करने के लिए कोई ज़रूरत नहीं कैसे। pathinfo():: आप कुछ है कि वास्तव में आप क्या चाहते हैं के लिए बनाया गया है का उपयोग कर सकते

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

$ पथ = $ _FILES ['image'] ['name'] [0]; वास्तविक फ़ाइल नाम एक सरणी में है। pathinfo केवल एक स्ट्रिंग का मूल्यांकन करेगा। – foureight84

+8

@ foureight84: केवल तभी मामला है यदि आपके पास 'image []' नामित फ़ील्ड अपलोड हैं ... – ThiefMaster

+2

मैंने आपके कोड को थोड़ा सा संशोधित किया है और कोई फ़ंक्शन बनाया है, अगर कोई फ़ंक्शन का उपयोग करना चाहता है। यहां कोड है: फ़ंक्शन getFileExtension ($ पथ) { $ ext = pathinfo ($ पथ, PATHINFO_EXTENSION); $ ext वापसी; } –

12

के बारे में
$ext = array_pop($userfile_extn); 
+7

एक प्यारा समारोह है कि: पी – Michelle

+2

मैं इस सलाह नहीं देते। आप अब से उसी वर्ष के सरणी के क्रम पर भरोसा कर रहे हैं। यह एक आलसी समाधान है जो भविष्य में मुद्दों का सबसे अधिक कारण बनता है। –

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

+1

विस्फोट से बेहतर ;-)। लेकिन, आप सही हैं, सक्षम होने पर pathinfo एक बेहतर तरीका है (कुछ mutualised सर्वर इस फ़ंक्शन को अक्षम करें ...)। – Julien

+10

** महत्वपूर्ण नोट **: यह पथों के साथ असफल हो जाएगा: 'var/www/website.com/somefile'। – brianreavis

20

आप माइम प्रकार के लिए इस के साथ की कोशिश कर सकते

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

$image['mime'] माइम प्रकार लौटाएगा।

इस फ़ंक्शन को जीडी लाइब्रेरी की आवश्यकता नहीं है। आप प्रलेखन here पा सकते हैं।

यह छवि के माइम प्रकार को लौटाता है।

कुछ लोग $_FILES["file"]["type"] का उपयोग करते हैं लेकिन यह ब्राउज़र द्वारा नहीं दिया गया है और PHP द्वारा नहीं किया गया है।

आप pathinfo() का उपयोग कर सकते हैं क्योंकि ThiefMaster ने छवि एक्सटेंशन को पुनर्प्राप्त करने का सुझाव दिया है।

सबसे पहले सुनिश्चित करें कि छवि के साथ किसी भी ऑपरेशन करने से पहले विकास में छवि सफलतापूर्वक अपलोड की जा रही है।

45

यह रूप में अच्छी तरह से काम करेगा:

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

'संदर्भ द्वारा केवल चर पारित किया जाना चाहिए', PHP मैनुअल – dader

+1

यह एक अच्छा तरीका नहीं है क्योंकि 'एंड' फ़ंक्शन का उद्देश्य सरणी के अंत में आंतरिक सरणी को सरणी के अंत में स्थानांतरित करना है और वापसी करना है वह तत्व समस्या यह है कि सरणी संदर्भ द्वारा पारित की जाती है और चूंकि आपकी सरणी गतिशील रूप से जेनरेट की जाती है, इसलिए इसे संदर्भ द्वारा पारित नहीं किया जा सकता है, इसलिए चेतावनी या विफलता, PHP के आपके संस्करण के आधार पर। – SteveK

+25

** महत्वपूर्ण नोट **: यह पथों के साथ असफल हो जाएगा: 'var/www/website.com/somefile' (आप pathinfo का उपयोग बंद कर रहे हैं)। – brianreavis

संबंधित मुद्दे